Preliminary support for MB_*MODAL styles.
diff --git a/windows/msgbox.c b/windows/msgbox.c
index a80e3c6..f4616f2 100644
--- a/windows/msgbox.c
+++ b/windows/msgbox.c
@@ -180,7 +180,7 @@
/* Resize the window */
SetWindowPos(hwnd, 0, 0, 0, wwidth, wheight,
SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREDRAW);
-
+
/* Position the icon */
SetWindowPos(GetDlgItem(hwnd, MSGBOX_IDICON), 0, ileft, (tiheight - iheight) / 2, 0, 0,
SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOREDRAW);
@@ -204,6 +204,23 @@
bpos += bw + bspace;
}
}
+
+ /* handle modal MessageBoxes */
+ if (lpmb->dwStyle & (MB_TASKMODAL|MB_SYSTEMMODAL))
+ {
+ FIXME("%s modal msgbox ! Not modal yet.\n",
+ lpmb->dwStyle & MB_TASKMODAL ? "task" : "system");
+ /* Probably do EnumTaskWindows etc. here for TASKMODAL
+ * and work your way up to the top - I'm lazy (HWND_TOP) */
+ SetWindowPos(hwnd, HWND_TOP, 0, 0, 0, 0,
+ SWP_NOSIZE | SWP_NOMOVE);
+ if (lpmb->dwStyle & MB_TASKMODAL)
+ /* at least MB_TASKMODAL seems to imply a ShowWindow */
+ ShowWindow(hwnd, SW_SHOW);
+ }
+ if (lpmb->dwStyle & MB_APPLMODAL)
+ FIXME("app modal msgbox ! Not modal yet.\n");
+
return hFont;
}
@@ -240,7 +257,7 @@
default:
/* Ok. Ignore all the other messages */
- TRACE("Message number %i is being ignored.\n", message);
+ TRACE("Message number 0x%04x is being ignored.\n", message);
break;
}
return 0;