X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bbcdf8bc7ca806d8278c7cb6d09d5590378b67d8..966a3b2cc63ee8ac81fe3095f2e0220504d95f49:/src/msw/mdi.cpp diff --git a/src/msw/mdi.cpp b/src/msw/mdi.cpp index fdb27c0822..b076f851be 100644 --- a/src/msw/mdi.cpp +++ b/src/msw/mdi.cpp @@ -6,7 +6,7 @@ // Created: 04/01/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -34,7 +34,7 @@ #include "wx/mdi.h" #include "wx/msw/private.h" -#if USE_NATIVE_STATUSBAR +#if wxUSE_NATIVE_STATUSBAR #include #endif @@ -77,7 +77,7 @@ END_EVENT_TABLE() #endif -wxMDIParentFrame::wxMDIParentFrame(void) +wxMDIParentFrame::wxMDIParentFrame() { m_clientWindow = NULL; m_currentChild = NULL; @@ -120,10 +120,6 @@ bool wxMDIParentFrame::Create(wxWindow *parent, m_windowMenu = (WXHMENU) ::LoadMenu(wxGetInstance(), "wxWindowMenu"); -#if WXDEBUG > 1 - wxDebugMsg("Loaded m_windowMenu %d\n", m_windowMenu); -#endif - DWORD msflags = WS_OVERLAPPED ; if (style & wxMINIMIZE_BOX) msflags |= WS_MINIMIZEBOX; @@ -153,7 +149,7 @@ bool wxMDIParentFrame::Create(wxWindow *parent, return TRUE; } -wxMDIParentFrame::~wxMDIParentFrame(void) +wxMDIParentFrame::~wxMDIParentFrame() { DestroyChildren(); @@ -161,7 +157,7 @@ wxMDIParentFrame::~wxMDIParentFrame(void) m_windowMenu = 0; if (m_clientWindow->MSWGetOldWndProc()) - m_clientWindow->UnsubclassWin(); + m_clientWindow->UnsubclassWin(); m_clientWindow->m_hWnd = 0; delete m_clientWindow; @@ -171,16 +167,16 @@ wxMDIParentFrame::~wxMDIParentFrame(void) void wxMDIParentFrame::GetClientSize(int *x, int *y) const { RECT rect; - GetClientRect((HWND) GetHWND(), &rect); + ::GetClientRect((HWND) GetHWND(), &rect); int cwidth = rect.right; int cheight = rect.bottom; if ( GetStatusBar() ) { - int sw, sh; - GetStatusBar()->GetSize(&sw, &sh); - cheight -= sh; + int sw, sh; + GetStatusBar()->GetSize(&sw, &sh); + cheight -= sh; } wxPoint pt(GetClientAreaOrigin()); @@ -198,41 +194,24 @@ void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar) m_frameMenuBar = NULL; return; } - - if (menu_bar->m_menuBarFrame) - return; - int i; - HMENU menu = CreateMenu(); + if ( menu_bar->IsAttached() ) + return; - for (i = 0; i < menu_bar->m_menuCount; i ++) - { - HMENU popup = (HMENU)menu_bar->m_menus[i]->m_hMenu; - // - // After looking Bounds Checker result, it seems that all - // menus must be individually destroyed. So, don't reset m_hMenu, - // to allow ~wxMenu to do the job. - // - menu_bar->m_menus[i]->m_savehMenu = (WXHMENU) popup; - // Uncommenting for the moment... JACS - menu_bar->m_menus[i]->m_hMenu = (WXHMENU) NULL; - AppendMenu(menu, MF_POPUP | MF_STRING, (UINT)popup, menu_bar->m_titles[i]); - } + m_hMenu = menu_bar->Create(); - menu_bar->m_hMenu = (WXHMENU)menu; if (m_frameMenuBar) delete m_frameMenuBar; - this->m_hMenu = (WXHMENU) menu; - // MDI parent-specific code follows HMENU subMenu = GetSubMenu((HMENU) m_windowMenu, 0); // Try to insert Window menu in front of Help, otherwise append it. + HMENU menu = (HMENU)m_hMenu; int N = GetMenuItemCount(menu); bool success = FALSE; - for (i = 0; i < N; i++) + for (int i = 0; i < N; i++) { char buf[100]; int chars = GetMenuString(menu, i, buf, 100, MF_BYPOSITION); @@ -261,12 +240,12 @@ void wxMDIParentFrame::SetMenuBar(wxMenuBar *menu_bar) DrawMenuBar((HWND) GetHWND()); m_frameMenuBar = menu_bar; - menu_bar->m_menuBarFrame = this; + menu_bar->Attach(this); } void wxMDIParentFrame::OnSize(wxSizeEvent& event) { -#if USE_CONSTRAINTS +#if wxUSE_CONSTRAINTS if (GetAutoLayout()) Layout(); #endif @@ -280,7 +259,7 @@ void wxMDIParentFrame::OnSize(wxSizeEvent& event) /* Already done in MSWOnSize // forward WM_SIZE to status bar control -#if USE_NATIVE_STATUSBAR +#if wxUSE_NATIVE_STATUSBAR if (m_frameStatusBar && m_frameStatusBar->IsKindOf(CLASSINFO(wxStatusBar95))) ((wxStatusBar95 *)m_frameStatusBar)->OnSize(event); #endif @@ -290,58 +269,11 @@ void wxMDIParentFrame::OnSize(wxSizeEvent& event) void wxMDIParentFrame::OnActivate(wxActivateEvent& event) { - // Do nothing -} - -#if WXWIN_COMPATIBILITY -/* -void wxMDIParentFrame::OldOnSize(int x, int y) -{ -#if WXWIN_COMPATIBILITY == 1 - wxSizeEvent event(wxSize(x, y), m_windowId); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -#else - -#if USE_CONSTRAINTS - if (GetAutoLayout()) - Layout(); -#endif - int x = 0; - int y = 0; - int width, height; - GetClientSize(&width, &height); - if ( GetToolBar() ) - { - int wt, ht; - GetToolBar()->GetSize(&wt, &ht); - height -= ht; - y += ht; - } - - if ( GetClientWindow() ) - GetClientWindow()->SetSize(x, y, width, height); - -#endif -} - -// Default activation behaviour - nothing. -// Default activation behaviour - override dedault wxFrame behaviour -void wxMDIParentFrame::OldOnActivate(bool flag) -{ -#if WXWIN_COMPATIBILITY == 1 - wxActivateEvent event(wxEVT_ACTIVATE, flag, m_windowId); - event.SetEventObject( this ); - GetEventHandler()->ProcessEvent(event); -#else -#endif + // Do nothing } -*/ - -#endif // Returns the active MDI child window -wxMDIChildFrame *wxMDIParentFrame::GetActiveChild(void) const +wxMDIChildFrame *wxMDIParentFrame::GetActiveChild() const { // HWND hWnd = (HWND)LOWORD(SendMessage((HWND) GetClientWindow()->GetHWND(), WM_MDIGETACTIVE, 0, 0L)); HWND hWnd = (HWND)SendMessage((HWND) GetClientWindow()->GetHWND(), WM_MDIGETACTIVE, 0, 0L); @@ -353,9 +285,9 @@ wxMDIChildFrame *wxMDIParentFrame::GetActiveChild(void) const // Create the client window class (don't Create the window, // just return a new class) -wxMDIClientWindow *wxMDIParentFrame::OnCreateClient(void) +wxMDIClientWindow *wxMDIParentFrame::OnCreateClient() { - return new wxMDIClientWindow ; + return new wxMDIClientWindow ; } // Responds to colour changes, and passes event on to children. @@ -380,27 +312,27 @@ void wxMDIParentFrame::OnSysColourChanged(wxSysColourChangedEvent& event) } // MDI operations -void wxMDIParentFrame::Cascade(void) +void wxMDIParentFrame::Cascade() { ::SendMessage( (HWND) GetClientWindow()->GetHWND(), WM_MDICASCADE, 0, 0); } -void wxMDIParentFrame::Tile(void) +void wxMDIParentFrame::Tile() { ::SendMessage( (HWND) GetClientWindow()->GetHWND(), WM_MDITILE, MDITILE_HORIZONTAL, 0); } -void wxMDIParentFrame::ArrangeIcons(void) +void wxMDIParentFrame::ArrangeIcons() { ::SendMessage( (HWND) GetClientWindow()->GetHWND(), WM_MDIICONARRANGE, 0, 0); } -void wxMDIParentFrame::ActivateNext(void) +void wxMDIParentFrame::ActivateNext() { ::SendMessage( (HWND) GetClientWindow()->GetHWND(), WM_MDINEXT, 0, 0); } -void wxMDIParentFrame::ActivatePrevious(void) +void wxMDIParentFrame::ActivatePrevious() { ::SendMessage( (HWND) GetClientWindow()->GetHWND(), WM_MDINEXT, 0, 1); } @@ -409,22 +341,22 @@ void wxMDIParentFrame::ActivatePrevious(void) /* // Returns a style for the client window - usually 0 // or, for example, wxHSCROLL | wxVSCROLL -long wxMDIParentFrame::GetClientStyle(void) const +long wxMDIParentFrame::GetClientStyle() const { - return wxHSCROLL | wxVSCROLL ; + return wxHSCROLL | wxVSCROLL ; } */ -bool wxMDIParentFrame::MSWOnDestroy(void) +bool wxMDIParentFrame::MSWOnDestroy() { return FALSE; } void wxMDIParentFrame::MSWOnCreate(WXLPCREATESTRUCT WXUNUSED(cs)) { - m_clientWindow = OnCreateClient(); - // Uses own style for client style - m_clientWindow->CreateClient(this, GetWindowStyleFlag()); + m_clientWindow = OnCreateClient(); + // Uses own style for client style + m_clientWindow->CreateClient(this, GetWindowStyleFlag()); } void wxMDIParentFrame::MSWOnSize(int x, int y, WXUINT id) @@ -443,7 +375,7 @@ void wxMDIParentFrame::MSWOnSize(int x, int y, WXUINT id) if (!m_iconized) { // forward WM_SIZE to status bar control -#if USE_NATIVE_STATUSBAR +#if wxUSE_NATIVE_STATUSBAR if (m_frameStatusBar && m_frameStatusBar->IsKindOf(CLASSINFO(wxStatusBar95))) { wxSizeEvent event(wxSize(x, y), m_frameStatusBar->GetId()); @@ -453,7 +385,7 @@ void wxMDIParentFrame::MSWOnSize(int x, int y, WXUINT id) } #endif - PositionStatusBar(); + PositionStatusBar(); PositionToolBar(); wxSizeEvent event(wxSize(x, y), m_windowId); @@ -465,12 +397,12 @@ void wxMDIParentFrame::MSWOnSize(int x, int y, WXUINT id) bool wxMDIParentFrame::MSWOnActivate(int state, bool minimized, WXHWND activate) { - wxWindow::MSWOnActivate(state, minimized, activate); + wxWindow::MSWOnActivate(state, minimized, activate); // If this window is an MDI parent, we must also send an OnActivate message // to the current child. if ((m_currentChild != NULL) && ((state == WA_ACTIVE) || (state == WA_CLICKACTIVE))) - { + { wxActivateEvent event(wxEVT_ACTIVATE, TRUE, m_currentChild->GetId()); event.SetEventObject( m_currentChild ); m_currentChild->GetEventHandler()->ProcessEvent(event); @@ -487,6 +419,7 @@ bool wxMDIParentFrame::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) if (win) return win->MSWCommand(cmd, id); +/* if (wxCurrentPopupMenu) { wxMenu *popupMenu = wxCurrentPopupMenu; @@ -494,6 +427,7 @@ bool wxMDIParentFrame::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) if (!popupMenu->MSWCommand(cmd, id)) return TRUE; } +*/ switch (id) { @@ -514,12 +448,9 @@ bool wxMDIParentFrame::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) } if (id >= 0xF000) { -#if WXDEBUG > 1 - wxDebugMsg("wxMDIFrame::OnCommand %d: system command: calling default window proc\n", GetHWND()); -#endif return FALSE; // Get WndProc to call default proc } - + if (m_parentFrameActive && (id < wxFIRST_MDI_CHILD || id > wxLAST_MDI_CHILD)) { ProcessCommand(id); @@ -527,15 +458,12 @@ bool wxMDIParentFrame::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) } else if (m_currentChild && (id < wxFIRST_MDI_CHILD || id > wxLAST_MDI_CHILD)) { -#if WXDEBUG > 1 - wxDebugMsg("wxMDIFrame::MSWOnCommand %d: calling child OnCommand\n", GetHWND()); -#endif return m_currentChild->MSWOnCommand(id, cmd, control); } } if (id >= wxFIRST_MDI_CHILD && id <= wxLAST_MDI_CHILD) { - wxNode* node = GetChildren()->First(); + wxNode* node = GetChildren().First(); while (node) { wxWindow* child = (wxWindow*) node->Data(); @@ -564,7 +492,7 @@ bool wxMDIParentFrame::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) */ } - return FALSE; + return wxWindow::MSWOnCommand(id, cmd, control); } void wxMDIParentFrame::MSWOnMenuHighlight(WXWORD nItem, WXWORD nFlags, WXHMENU hSysMenu) @@ -592,22 +520,20 @@ void wxMDIParentFrame::MSWOnMenuHighlight(WXWORD nItem, WXWORD nFlags, WXHMENU h long wxMDIParentFrame::MSWDefWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) { - WXHWND clientWnd; - if ( GetClientWindow() ) - clientWnd = GetClientWindow()->GetHWND(); - else - clientWnd = 0; + WXHWND clientWnd; + if ( GetClientWindow() ) + clientWnd = GetClientWindow()->GetHWND(); + else + clientWnd = 0; return DefFrameProc((HWND) GetHWND(), (HWND) clientWnd, message, wParam, lParam); } bool wxMDIParentFrame::MSWProcessMessage(WXMSG* msg) { - MSG *pMsg = (MSG *)msg; - if ((m_currentChild != (wxWindow *)NULL) && (m_currentChild->GetHWND() != (WXHWND) NULL) && m_currentChild->MSWProcessMessage(msg)) return TRUE; - + return FALSE; } @@ -617,7 +543,7 @@ bool wxMDIParentFrame::MSWTranslateMessage(WXMSG* msg) if ((m_currentChild != (wxWindow *)NULL) && (m_currentChild->GetHWND() != (WXHWND) NULL) && m_currentChild->MSWTranslateMessage(msg)) return TRUE; - + if (m_acceleratorTable.Ok() && ::TranslateAccelerator((HWND) GetHWND(), (HACCEL) m_acceleratorTable.GetHACCEL(), pMsg)) return TRUE; @@ -640,9 +566,9 @@ bool wxMDIParentFrame::MSWOnEraseBkgnd(WXHDC WXUNUSED(pDC)) extern wxWindow *wxWndHook; extern wxList *wxWinHandleList; -wxMDIChildFrame::wxMDIChildFrame(void) +wxMDIChildFrame::wxMDIChildFrame() { -// m_active = FALSE; +// m_active = FALSE; } bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, @@ -672,7 +598,7 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, int height = size.y; MDICREATESTRUCT mcs; - + mcs.szClass = wxMDIChildFrameClassName; mcs.szTitle = title; mcs.hOwner = wxGetInstance(); @@ -709,7 +635,7 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, mcs.lParam = 0; DWORD Return = SendMessage((HWND) parent->GetClientWindow()->GetHWND(), - WM_MDICREATE, 0, (LONG)(LPSTR)&mcs); + WM_MDICREATE, 0, (LONG)(LPSTR)&mcs); //handle = (HWND)LOWORD(Return); // Must be the DWORRD for WIN32. And in 16 bits, HIWORD=0 (says Microsoft) @@ -727,9 +653,9 @@ bool wxMDIChildFrame::Create(wxMDIParentFrame *parent, return TRUE; } -wxMDIChildFrame::~wxMDIChildFrame(void) +wxMDIChildFrame::~wxMDIChildFrame() { - MSWDestroyWindow(); + MSWDestroyWindow(); ResetWindowStyle(NULL); } @@ -741,7 +667,7 @@ void wxMDIChildFrame::SetClientSize(int width, int height) HWND hWnd = (HWND) GetHWND(); RECT rect; - GetClientRect(hWnd, &rect); + ::GetClientRect(hWnd, &rect); RECT rect2; GetWindowRect(hWnd, &rect2); @@ -754,8 +680,8 @@ void wxMDIChildFrame::SetClientSize(int width, int height) if (GetStatusBar()) { - int sx, sy; - GetStatusBar()->GetSize(&sx, &sy); + int sx, sy; + GetStatusBar()->GetSize(&sx, &sy); actual_height += sy; } @@ -799,42 +725,25 @@ void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar) m_frameMenuBar = NULL; return; } - - if (menu_bar->m_menuBarFrame) - return; - int i; - HMENU menu = CreateMenu(); + if ( menu_bar->IsAttached() ) + return; - for (i = 0; i < menu_bar->m_menuCount; i ++) - { - HMENU popup = (HMENU)menu_bar->m_menus[i]->m_hMenu; - // - // After looking Bounds Checker result, it seems that all - // menus must be individually destroyed. So, don't reset m_hMenu, - // to allow ~wxMenu to do the job. - // - menu_bar->m_menus[i]->m_savehMenu = (WXHMENU) popup; - // Uncommenting for the moment... JACS - menu_bar->m_menus[i]->m_hMenu = 0; - ::AppendMenu((HMENU) menu, MF_POPUP | MF_STRING, (UINT)popup, menu_bar->m_titles[i]); - } + m_hMenu = menu_bar->Create(); - menu_bar->m_hMenu = (WXHMENU)menu; if (m_frameMenuBar) delete m_frameMenuBar; - this->m_hMenu = (WXHMENU) menu; - wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent(); parent->m_parentFrameActive = FALSE; HMENU subMenu = GetSubMenu((HMENU) parent->GetWindowMenu(), 0); // Try to insert Window menu in front of Help, otherwise append it. + HMENU menu = (HMENU)m_hMenu; int N = GetMenuItemCount(menu); bool success = FALSE; - for (i = 0; i < N; i++) + for (int i = 0; i < N; i++) { char buf[100]; int chars = GetMenuString(menu, i, buf, 100, MF_BYPOSITION); @@ -862,25 +771,25 @@ void wxMDIChildFrame::SetMenuBar(wxMenuBar *menu_bar) DrawMenuBar((HWND) parent->GetHWND()); m_frameMenuBar = menu_bar; - menu_bar->m_menuBarFrame = this; + menu_bar->Attach(this); } // MDI operations -void wxMDIChildFrame::Maximize(void) +void wxMDIChildFrame::Maximize() { wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent(); if ( parent && parent->GetClientWindow() ) ::SendMessage( (HWND) parent->GetClientWindow()->GetHWND(), WM_MDIMAXIMIZE, (WPARAM) (HWND) GetHWND(), 0); } -void wxMDIChildFrame::Restore(void) +void wxMDIChildFrame::Restore() { wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent(); if ( parent && parent->GetClientWindow() ) ::SendMessage( (HWND) parent->GetClientWindow()->GetHWND(), WM_MDIRESTORE, (WPARAM) (HWND) GetHWND(), 0); } -void wxMDIChildFrame::Activate(void) +void wxMDIChildFrame::Activate() { wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent(); if ( parent && parent->GetClientWindow() ) @@ -894,12 +803,9 @@ void wxMDIChildFrame::MSWOnSize(int x, int y, WXUINT id) if (invalidHandle == (HWND) GetHWND()) { -#if WXDEBUG > 1 - wxDebugMsg("wxMDIChildFrame::OnSize %d: invalid, so returning.\n", GetHWND()); -#endif return; } - + (void)MSWDefWindowProc(m_lastMsg, m_lastWParam, m_lastLParam); switch (id) @@ -916,7 +822,7 @@ void wxMDIChildFrame::MSWOnSize(int x, int y, WXUINT id) if (!m_iconized) { // forward WM_SIZE to status bar control -#if USE_NATIVE_STATUSBAR +#if wxUSE_NATIVE_STATUSBAR if (m_frameStatusBar && m_frameStatusBar->IsKindOf(CLASSINFO(wxStatusBar95))) { wxSizeEvent event(wxSize(x, y), m_frameStatusBar->GetId()); @@ -935,9 +841,6 @@ void wxMDIChildFrame::MSWOnSize(int x, int y, WXUINT id) bool wxMDIChildFrame::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) { -#if WXDEBUG > 1 - wxDebugMsg("wxMDIChildFrame::MSWOnCommand %d\n", GetHWND()); -#endif // if ((cmd == 0) && GetHWND()) if (GetHWND()) { @@ -964,7 +867,7 @@ bool wxMDIChildFrame::MSWOnCommand(WXWORD id, WXWORD cmd, WXHWND control) return TRUE; } else - return FALSE; + return wxWindow::MSWOnCommand(id, cmd, control); } long wxMDIChildFrame::MSWDefWindowProc(WXUINT message, WXUINT wParam, WXLPARAM lParam) @@ -996,13 +899,7 @@ long wxMDIChildFrame::MSWOnMDIActivate(long activate, WXHWND WXUNUSED(one), WXHW { wxMDIParentFrame *parent = (wxMDIParentFrame *)GetParent(); HMENU parent_menu = (HMENU) parent->GetWinMenu(); -#if WXDEBUG > 1 - wxDebugMsg("Parent menu is %d\n", parent_menu); -#endif HMENU child_menu = (HMENU) GetWinMenu(); -#if WXDEBUG > 1 - wxDebugMsg("Child menu is %d\n", child_menu); -#endif if (activate) { @@ -1012,10 +909,6 @@ long wxMDIChildFrame::MSWOnMDIActivate(long activate, WXHWND WXUNUSED(one), WXHW { parent->m_parentFrameActive = FALSE; HMENU subMenu = GetSubMenu((HMENU) parent->GetWindowMenu(), 0); -#if WXDEBUG > 1 - wxDebugMsg("Window submenu is %d\n", subMenu); -#endif -// HMENU subMenu = 0; #ifdef __WIN32__ ::SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDISETMENU, (WPARAM)child_menu, @@ -1045,10 +938,6 @@ long wxMDIChildFrame::MSWOnMDIActivate(long activate, WXHWND WXUNUSED(one), WXHW { parent->m_parentFrameActive = TRUE; HMENU subMenu = GetSubMenu((HMENU) parent->GetWindowMenu(), 0); -#if WXDEBUG > 1 - wxDebugMsg("Window submenu is %d\n", subMenu); -#endif -// HMENU subMenu = 0; #ifdef __WIN32__ ::SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDISETMENU, (WPARAM)parent_menu, @@ -1065,14 +954,10 @@ long wxMDIChildFrame::MSWOnMDIActivate(long activate, WXHWND WXUNUSED(one), WXHW wxActivateEvent event(wxEVT_ACTIVATE, flag, m_windowId); event.SetEventObject( this ); GetEventHandler()->ProcessEvent(event); - -#if WXDEBUG > 1 - wxDebugMsg("Finished (de)activating\n"); -#endif return 0; } -void wxMDIChildFrame::MSWDestroyWindow(void) +void wxMDIChildFrame::MSWDestroyWindow() { MSWDetachWindowMenu(); invalidHandle = (HWND) GetHWND(); @@ -1085,16 +970,10 @@ void wxMDIChildFrame::MSWDestroyWindow(void) // destroyed. HWND oldHandle = (HWND)GetHWND(); -#if WXDEBUG > 1 - wxDebugMsg("*** About to DestroyWindow MDI child %d\n", oldHandle); -#endif #ifdef __WIN32__ SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDIDESTROY, (WPARAM)oldHandle, (LPARAM)0); #else SendMessage((HWND) parent->GetClientWindow()->GetHWND(), WM_MDIDESTROY, (HWND)oldHandle, 0); -#endif -#if WXDEBUG > 1 - wxDebugMsg("*** Finished DestroyWindow MDI child %d\n", oldHandle); #endif invalidHandle = 0; @@ -1113,30 +992,30 @@ bool wxMDIChildFrame::ResetWindowStyle(void *vrect) { #if defined(__WIN95__) RECT *rect = (RECT *)vrect; - wxMDIParentFrame* pFrameWnd = (wxMDIParentFrame *)GetParent(); - wxMDIChildFrame* pChild = pFrameWnd->GetActiveChild(); - if (!pChild || (pChild == this)) - { - DWORD dwStyle = ::GetWindowLong((HWND) pFrameWnd->GetClientWindow()->GetHWND(), GWL_EXSTYLE); + wxMDIParentFrame* pFrameWnd = (wxMDIParentFrame *)GetParent(); + wxMDIChildFrame* pChild = pFrameWnd->GetActiveChild(); + if (!pChild || (pChild == this)) + { + DWORD dwStyle = ::GetWindowLong((HWND) pFrameWnd->GetClientWindow()->GetHWND(), GWL_EXSTYLE); DWORD dwThisStyle = ::GetWindowLong((HWND) GetHWND(), GWL_STYLE); - DWORD dwNewStyle = dwStyle; - if (pChild != NULL && (dwThisStyle & WS_MAXIMIZE)) - dwNewStyle &= ~(WS_EX_CLIENTEDGE); - else - dwNewStyle |= WS_EX_CLIENTEDGE; - - if (dwStyle != dwNewStyle) - { - ::RedrawWindow((HWND) pFrameWnd->GetClientWindow()->GetHWND(), NULL, NULL, RDW_INVALIDATE | RDW_ALLCHILDREN); - ::SetWindowLong((HWND) pFrameWnd->GetClientWindow()->GetHWND(), GWL_EXSTYLE, dwNewStyle); - ::SetWindowPos((HWND) pFrameWnd->GetClientWindow()->GetHWND(), NULL, 0, 0, 0, 0, - SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOCOPYBITS); - if (rect) - ::GetClientRect((HWND) pFrameWnd->GetClientWindow()->GetHWND(), rect); - return TRUE; - } - } - return FALSE; + DWORD dwNewStyle = dwStyle; + if (pChild != NULL && (dwThisStyle & WS_MAXIMIZE)) + dwNewStyle &= ~(WS_EX_CLIENTEDGE); + else + dwNewStyle |= WS_EX_CLIENTEDGE; + + if (dwStyle != dwNewStyle) + { + ::RedrawWindow((HWND) pFrameWnd->GetClientWindow()->GetHWND(), NULL, NULL, RDW_INVALIDATE | RDW_ALLCHILDREN); + ::SetWindowLong((HWND) pFrameWnd->GetClientWindow()->GetHWND(), GWL_EXSTYLE, dwNewStyle); + ::SetWindowPos((HWND) pFrameWnd->GetClientWindow()->GetHWND(), NULL, 0, 0, 0, 0, + SWP_FRAMECHANGED | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOCOPYBITS); + if (rect) + ::GetClientRect((HWND) pFrameWnd->GetClientWindow()->GetHWND(), rect); + return TRUE; + } + } + return FALSE; #else return FALSE; #endif @@ -1147,36 +1026,36 @@ void wxMDIChildFrame::MSWOnWindowPosChanging(void *pos) WINDOWPOS *lpPos = (WINDOWPOS *)pos; #if defined(__WIN95__) if (!(lpPos->flags & SWP_NOSIZE)) - { - RECT rectClient; - DWORD dwExStyle = ::GetWindowLong((HWND) GetHWND(), GWL_EXSTYLE); + { + RECT rectClient; + DWORD dwExStyle = ::GetWindowLong((HWND) GetHWND(), GWL_EXSTYLE); DWORD dwStyle = ::GetWindowLong((HWND) GetHWND(), GWL_STYLE); - if (ResetWindowStyle((void *) & rectClient) && (dwStyle & WS_MAXIMIZE)) - { - ::AdjustWindowRectEx(&rectClient, dwStyle, FALSE, dwExStyle); - lpPos->x = rectClient.left; + if (ResetWindowStyle((void *) & rectClient) && (dwStyle & WS_MAXIMIZE)) + { + ::AdjustWindowRectEx(&rectClient, dwStyle, FALSE, dwExStyle); + lpPos->x = rectClient.left; lpPos->y = rectClient.top; - lpPos->cx = rectClient.right - rectClient.left; + lpPos->cx = rectClient.right - rectClient.left; lpPos->cy = rectClient.bottom - rectClient.top; - } - wxMDIParentFrame* pFrameWnd = (wxMDIParentFrame *)GetParent(); + } + wxMDIParentFrame* pFrameWnd = (wxMDIParentFrame *)GetParent(); if (pFrameWnd && pFrameWnd->GetToolBar()) { pFrameWnd->GetToolBar()->Refresh(); } - } + } #endif Default(); } // Client window -wxMDIClientWindow::wxMDIClientWindow(void) +wxMDIClientWindow::wxMDIClientWindow() { m_scrollX = 0; m_scrollY = 0; } -wxMDIClientWindow::~wxMDIClientWindow(void) +wxMDIClientWindow::~wxMDIClientWindow() { } @@ -1187,15 +1066,15 @@ bool wxMDIClientWindow::CreateClient(wxMDIParentFrame *parent, long style) CLIENTCREATESTRUCT ccs; m_windowStyle = style; m_windowParent = parent; - + ccs.hWindowMenu = (HMENU) parent->GetWindowMenu(); ccs.idFirstChild = wxFIRST_MDI_CHILD; DWORD msStyle = WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN ; if ( parent->GetWindowStyleFlag() & wxHSCROLL ) - msStyle |= WS_HSCROLL; + msStyle |= WS_HSCROLL; if ( parent->GetWindowStyleFlag() & wxVSCROLL ) - msStyle |= WS_VSCROLL ; + msStyle |= WS_VSCROLL ; #if defined(__WIN95__) DWORD exStyle = WS_EX_CLIENTEDGE; @@ -1222,10 +1101,10 @@ long wxMDIClientWindow::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPa long wxMDIClientWindow::MSWDefWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { - if ( MSWGetOldWndProc() != 0) - return ::CallWindowProc(CASTWNDPROC MSWGetOldWndProc(), (HWND) GetHWND(), (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam); - else - return ::DefWindowProc((HWND) m_hWnd, (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam); + if ( MSWGetOldWndProc() != 0) + return ::CallWindowProc(CASTWNDPROC MSWGetOldWndProc(), (HWND) GetHWND(), (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam); + else + return ::DefWindowProc((HWND) m_hWnd, (UINT) nMsg, (WPARAM) wParam, (LPARAM) lParam); } // Explicitly call default scroll behaviour @@ -1242,7 +1121,7 @@ void wxMDIClientWindow::OnScroll(wxScrollEvent& event) else m_scrollY = event.GetPosition(); // Always returns zero! - Default(); + Default(); } // Should hand the message to the default proc