#if wxUSE_MDI && !defined(__WXUNIVERSAL__)
#ifndef WX_PRECOMP
- #include "wx/setup.h"
#include "wx/frame.h"
#include "wx/menu.h"
#include "wx/app.h"
return false;
}
+ SetOwnBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_APPWORKSPACE));
+
// unlike (almost?) all other windows, frames are created hidden
m_isShown = false;
msflags |= WS_MINIMIZEBOX;
if (style & wxMAXIMIZE_BOX)
msflags |= WS_MAXIMIZEBOX;
- if (style & wxTHICK_FRAME)
+ if (style & wxRESIZE_BORDER)
msflags |= WS_THICKFRAME;
if (style & wxSYSTEM_MENU)
msflags |= WS_SYSMENU;
if ( show )
::BringWindowToTop(GetHwnd());
+ // we need to refresh the MDI frame window menu to include (or exclude if
+ // we've been hidden) this frame
+ wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent();
+ MDISetMenu(parent->GetClientWindow(), NULL, NULL);
+
return true;
}
lpPos->cx = rectClient.right - rectClient.left;
lpPos->cy = rectClient.bottom - rectClient.top;
}
-#if wxUSE_TOOLBAR
- wxMDIParentFrame* pFrameWnd = (wxMDIParentFrame *)GetParent();
- if (pFrameWnd && pFrameWnd->GetToolBar() && pFrameWnd->GetToolBar()->IsShown())
- {
- pFrameWnd->GetToolBar()->Refresh();
- }
-#endif
}
return false;
bool wxMDIChildFrame::MSWTranslateMessage(WXMSG* msg)
{
- return wxFrame::MSWTranslateMessage(msg);
+ // we must pass the parent frame to ::TranslateAccelerator(), otherwise it
+ // doesn't do its job correctly for MDI child menus
+ return MSWDoTranslateMessage((wxMDIChildFrame *)GetParent(), msg);
}
// ---------------------------------------------------------------------------
static void MDISetMenu(wxWindow *win, HMENU hmenuFrame, HMENU hmenuWindow)
{
- ::SendMessage(GetWinHwnd(win), WM_MDISETMENU,
- (WPARAM)hmenuFrame, (LPARAM)hmenuWindow);
+ if ( hmenuFrame || hmenuWindow )
+ {
+ if ( !::SendMessage(GetWinHwnd(win),
+ WM_MDISETMENU,
+ (WPARAM)hmenuFrame,
+ (LPARAM)hmenuWindow) )
+ {
+ wxLogLastError(_T("SendMessage(WM_MDISETMENU)"));
+ }
+ }
// update menu bar of the parent window
wxWindow *parent = win->GetParent();