long style,
const wxString& name)
{
- m_defaultIcon = (WXHICON) (wxSTD_MDIPARENTFRAME_ICON ? wxSTD_MDIPARENTFRAME_ICON : wxDEFAULT_MDIPARENTFRAME_ICON);
+ m_defaultIcon = (WXHICON) (wxSTD_MDIPARENTFRAME_ICON
+ ? wxSTD_MDIPARENTFRAME_ICON
+ : wxDEFAULT_MDIPARENTFRAME_ICON);
m_clientWindow = NULL;
m_currentChild = NULL;
- if (style & wxFRAME_NO_WINDOW_MENU)
- m_windowMenu = (wxMenu*) NULL;
- else
+ // this style can be used to prevent a window from having the standard MDI
+ // "Window" menu
+ if ( style & wxFRAME_NO_WINDOW_MENU )
+ {
+ m_windowMenu = (wxMenu *)NULL;
+ }
+ else // normal case: we have the window menu, so construct it
{
- // m_windowMenu = (WXHMENU) ::LoadMenu(wxGetInstance(), wxT("wxWindowMenu"));
m_windowMenu = new wxMenu;
-
- m_windowMenu->Append(4002, wxT("&Cascade"));
- m_windowMenu->Append(4001, wxT("Tile &Horizontally"));
- m_windowMenu->Append(4005, wxT("Tile &Vertically"));
+ m_windowMenu->Append(IDM_WINDOWCASCADE, wxT("&Cascade"));
+ m_windowMenu->Append(IDM_WINDOWTILEHOR, wxT("Tile &Horizontally"));
+ m_windowMenu->Append(IDM_WINDOWTILEVERT, wxT("Tile &Vertically"));
m_windowMenu->AppendSeparator();
- m_windowMenu->Append(4003, wxT("&Arrange Icons"));
- m_windowMenu->Append(4004, wxT("&Next"));
+ m_windowMenu->Append(IDM_WINDOWICONS, wxT("&Arrange Icons"));
+ m_windowMenu->Append(IDM_WINDOWNEXT, wxT("&Next"));
}
m_parentFrameActive = TRUE;
bool wxMDIChildFrame::MSWTranslateMessage(WXMSG* msg)
{
- return m_acceleratorTable.Translate(GetParent(), msg);
+ return wxFrame::MSWTranslateMessage(msg);
}
// ---------------------------------------------------------------------------
wxMDIChildFrame* pChild = pFrameWnd->GetActiveChild();
if (!pChild || (pChild == this))
{
- DWORD dwStyle = ::GetWindowLong(GetWinHwnd(pFrameWnd->GetClientWindow()), GWL_EXSTYLE);
- DWORD dwThisStyle = ::GetWindowLong(GetHwnd(), GWL_STYLE);
+ HWND hwndClient = GetWinHwnd(pFrameWnd->GetClientWindow());
+ DWORD dwStyle = ::GetWindowLong(hwndClient, GWL_EXSTYLE);
+
+ // we want to test whether there is a maximized child, so just set
+ // dwThisStyle to 0 if there is no child at all
+ DWORD dwThisStyle = pChild
+ ? ::GetWindowLong(GetWinHwnd(pChild), GWL_STYLE) : NULL;
DWORD dwNewStyle = dwStyle;
- if (pChild != NULL && (dwThisStyle & WS_MAXIMIZE))
+ if ( dwThisStyle & WS_MAXIMIZE )
dwNewStyle &= ~(WS_EX_CLIENTEDGE);
else
dwNewStyle |= WS_EX_CLIENTEDGE;
if (dwStyle != dwNewStyle)
{
- HWND hwnd = GetWinHwnd(pFrameWnd->GetClientWindow());
- ::RedrawWindow(hwnd, NULL, NULL, RDW_INVALIDATE | RDW_ALLCHILDREN);
- ::SetWindowLong(hwnd, GWL_EXSTYLE, dwNewStyle);
- ::SetWindowPos(hwnd, NULL, 0, 0, 0, 0,
+ // force update of everything
+ ::RedrawWindow(hwndClient, NULL, NULL,
+ RDW_INVALIDATE | RDW_ALLCHILDREN);
+ ::SetWindowLong(hwndClient, GWL_EXSTYLE, dwNewStyle);
+ ::SetWindowPos(hwndClient, NULL, 0, 0, 0, 0,
SWP_FRAMECHANGED | SWP_NOACTIVATE |
SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER |
SWP_NOCOPYBITS);
if (rect)
- ::GetClientRect(hwnd, rect);
+ ::GetClientRect(hwndClient, rect);
return TRUE;
}
ccs.hWindowMenu = (HMENU) parent->GetWindowMenu()->GetHMenu();
ccs.idFirstChild = wxFIRST_MDI_CHILD;
- DWORD msStyle = WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN;
+ DWORD msStyle = MDIS_ALLCHILDSTYLES | WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN;
if ( style & wxHSCROLL )
msStyle |= WS_HSCROLL;
if ( style & wxVSCROLL )