Markus Gömmel : user32: Center MessageBox dialogs to desktop, as Windows does.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jul 2 09:52:05 CDT 2007
Module: wine
Branch: master
Commit: ddb4be2bb0d03ec9a6beccfcb688844087a4f0ea
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ddb4be2bb0d03ec9a6beccfcb688844087a4f0ea
Author: Markus Gömmel <m.goemmel at compulab.de>
Date: Fri Jun 22 13:53:30 2007 +0200
user32: Center MessageBox dialogs to desktop, as Windows does.
---
dlls/user32/msgbox.c | 16 ++++++++++++----
1 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/dlls/user32/msgbox.c b/dlls/user32/msgbox.c
index fc74314..1353d6b 100644
--- a/dlls/user32/msgbox.c
+++ b/dlls/user32/msgbox.c
@@ -70,9 +70,11 @@ static HFONT MSGBOX_OnInit(HWND hwnd, LPMSGBOXPARAMSW lpmb)
HWND hItem;
HDC hdc;
int i, buttons;
- int bspace, bw, bh, theight, tleft, wwidth, wheight, bpos;
+ int bspace, bw, bh, theight, tleft, wwidth, wheight, wleft, wtop, bpos;
int borheight, borwidth, iheight, ileft, iwidth, twidth, tiheight;
NONCLIENTMETRICSW nclm;
+ HMONITOR monitor = 0;
+ MONITORINFO mon_info;
LPCWSTR lpszText;
WCHAR buf[256];
@@ -244,9 +246,15 @@ static HFONT MSGBOX_OnInit(HWND hwnd, LPMSGBOXPARAMSW lpmb)
wwidth = tleft + twidth + ileft + borwidth;
wheight = 8 + tiheight + bh + borheight;
- /* Resize the window */
- SetWindowPos(hwnd, 0, 0, 0, wwidth, wheight,
- SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREDRAW);
+ /* Message boxes are always desktop centered, so query desktop size and center window */
+ monitor = MonitorFromWindow(lpmb->hwndOwner ? lpmb->hwndOwner : GetActiveWindow(), MONITOR_DEFAULTTOPRIMARY);
+ GetMonitorInfoW(monitor, &mon_info);
+ wleft = (mon_info.rcWork.left + mon_info.rcWork.right - wwidth) / 2;
+ wtop = (mon_info.rcWork.top + mon_info.rcWork.bottom - wheight) / 2;
+
+ /* Resize and center the window */
+ SetWindowPos(hwnd, 0, wleft, wtop, wwidth, wheight,
+ SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREDRAW);
/* Position the icon */
SetWindowPos(GetDlgItem(hwnd, MSGBOX_IDICON), 0, ileft, (tiheight - iheight) / 2, 0, 0,
More information about the wine-cvs
mailing list