// ---------------------------------------------------------------------------
WXLRESULT wxMDIParentFrame::MSWWindowProc(WXUINT message,
- WXWPARAM wParam,
- WXLPARAM lParam)
+ WXWPARAM wParam,
+ WXLPARAM lParam)
{
WXLRESULT rc = 0;
bool processed = false;
}
break;
+ case WM_COMMAND:
+ // system messages such as SC_CLOSE are sent as WM_COMMANDs to the
+ // parent MDI frame and we must let the DefFrameProc() have them
+ // for these commands to work (without it, closing the maximized
+ // MDI children doesn't work, for example)
+ {
+ WXWORD id, cmd;
+ WXHWND hwnd;
+ UnpackCommand(wParam, lParam, &id, &hwnd, &cmd);
+
+ if ( cmd == 0 /* menu */ &&
+ id >= SC_SIZE /* first system menu command */ )
+ {
+ MSWDefWindowProc(message, wParam, lParam);
+ processed = true;
+ }
+ }
+ break;
+
case WM_CREATE:
m_clientWindow = OnCreateClient();
// Uses own style for client style
break;
case WM_SIZE:
- // though we don't (usually) resize the MDI client to exactly fit the
- // client area we need to pass this one to DefFrameProc to allow the children to show
+ // though we don't (usually) resize the MDI client to exactly fit
+ // the client area we need to pass this one to DefFrameProc to
+ // allow the children to show
break;
}
#endif // wxUSE_MENUS
-bool wxMDIParentFrame::TryValidator(wxEvent& event)
+bool wxMDIParentFrame::TryBefore(wxEvent& event)
{
// menu (and toolbar) events should be sent to the active child frame
// first, if any
return true;
}
- return wxMDIParentFrameBase::TryValidator(event);
+ return wxMDIParentFrameBase::TryBefore(event);
}
WXLRESULT wxMDIParentFrame::MSWDefWindowProc(WXUINT message,
// ---------------------------------------------------------------------------
WXLRESULT wxMDIChildFrame::MSWWindowProc(WXUINT message,
- WXWPARAM wParam,
- WXLPARAM lParam)
+ WXWPARAM wParam,
+ WXLPARAM lParam)
{
WXLRESULT rc = 0;
bool processed = false;
MSWDefWindowProc(message, wParam, lParam);
break;
- case WM_SYSCOMMAND:
- // DefMDIChildProc handles SC_{NEXT/PREV}WINDOW here, so pass it
- // the message (the base class version does not)
- return MSWDefWindowProc(message, wParam, lParam);
-
case WM_WINDOWPOSCHANGING:
processed = HandleWindowPosChanging((LPWINDOWPOS)lParam);
break;
(WPARAM)hmenuFrame,
(LPARAM)hmenuWindow) )
{
-#ifdef __WXDEBUG__
DWORD err = ::GetLastError();
if ( err )
wxLogApiError(_T("SendMessage(WM_MDISETMENU)"), err);
-#endif // __WXDEBUG__
}
}