- Handle WM_MDIRESTORE by calling WM_SYSCOMMAND for the child window so that the system menu is set correctly. - In MDICascade and MDITile use WM_MDIRESTORE message to restore maximized window so that system menu is handled correctly.
diff --git a/windows/mdi.c b/windows/mdi.c index b551ba5..9bfcf4b 100644 --- a/windows/mdi.c +++ b/windows/mdi.c
@@ -640,7 +640,8 @@ UINT32 total; if (ci->hwndChildMaximized) - ShowWindow16( ci->hwndChildMaximized, SW_NORMAL); + SendMessage32A( clientWnd->hwndSelf, WM_MDIRESTORE, + (WPARAM32)ci->hwndChildMaximized, 0); if (ci->nActiveChildren == 0) return 0; @@ -686,7 +687,8 @@ UINT32 total = 0; if (ci->hwndChildMaximized) - ShowWindow32(ci->hwndChildMaximized, SW_NORMAL); + SendMessage32A( wndClient->hwndSelf, WM_MDIRESTORE, + (WPARAM32)ci->hwndChildMaximized, 0); if (ci->nActiveChildren == 0) return; @@ -1011,7 +1013,7 @@ break; case WM_MDIRESTORE: - ShowWindow32( (HWND32)wParam, SW_NORMAL); + SendMessage32A( (HWND32)wParam, WM_SYSCOMMAND, SC_RESTORE, 0); return 0; case WM_MDISETMENU: