X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/4ab2824cc67d6fe75e5a377f36ea35f131c4e137..7e02be855d14263c996448bdb56c9e1002ad9b53:/src/msw/frame.cpp diff --git a/src/msw/frame.cpp b/src/msw/frame.cpp index 73f53067bf..4afd604737 100644 --- a/src/msw/frame.cpp +++ b/src/msw/frame.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: msw/frame.cpp +// Name: src/msw/frame.cpp // Purpose: wxFrame // Author: Julian Smart // Modified by: @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) - #pragma implementation "frame.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -47,9 +43,9 @@ #endif #if defined(__POCKETPC__) || defined(__SMARTPHONE__) -#include "wx/msw/ole/oleutils.h" -#include -#include "wx/msw/winundef.h" + #include + #include + #include "wx/msw/winundef.h" #endif #if wxUSE_STATUSBAR @@ -183,14 +179,6 @@ void wxFrame::Init() m_hwndToolTip = 0; #endif -#if defined(__SMARTPHONE__) || defined(__POCKETPC__) - SHACTIVATEINFO* info = new SHACTIVATEINFO; - memset(info, 0, sizeof(SHACTIVATEINFO)); - info->cbSize = sizeof(SHACTIVATEINFO); - - m_activateInfo = (void*) info; -#endif - m_wasMinimized = false; } @@ -211,14 +199,14 @@ bool wxFrame::Create(wxWindow *parent, SetLeftMenu(wxID_EXIT, _("Done")); #endif -#if defined(__POCKETPC__) +#if wxUSE_ACCEL && defined(__POCKETPC__) // The guidelines state that Ctrl+Q should quit the app. // Let's define an accelerator table to send wxID_EXIT. wxAcceleratorEntry entries[1]; entries[0].Set(wxACCEL_CTRL, 'Q', wxID_EXIT); wxAcceleratorTable accel(1, entries); SetAcceleratorTable(accel); -#endif +#endif // wxUSE_ACCEL && __POCKETPC__ return true; } @@ -227,12 +215,6 @@ wxFrame::~wxFrame() { m_isBeingDeleted = true; DeleteAllBars(); - -#if defined(__SMARTPHONE__) || defined(__POCKETPC__) - SHACTIVATEINFO* info = (SHACTIVATEINFO*) m_activateInfo; - delete info; - m_activateInfo = NULL; -#endif } // ---------------------------------------------------------------------------- @@ -522,8 +504,27 @@ bool wxFrame::ShowFullScreen(bool show, long style) } #endif // wxUSE_TOOLBAR - if ((m_fsStyle & wxFULLSCREEN_NOMENUBAR) && m_hMenu) - ::SetMenu(GetHwnd(), (HMENU)m_hMenu); + if (m_fsStyle & wxFULLSCREEN_NOMENUBAR) + { + WXHMENU menu = m_hMenu; + +#if wxUSE_MDI_ARCHITECTURE + wxMDIParentFrame *frame = wxDynamicCast(this, wxMDIParentFrame); + if (frame) + { + wxMDIChildFrame *child = frame->GetActiveChild(); + if (child) + { + menu = child->GetWinMenu(); + } + } +#endif // wxUSE_MDI_ARCHITECTURE + + if (menu) + { + ::SetMenu(GetHwnd(), (HMENU)menu); + } + } #if wxUSE_STATUSBAR wxStatusBar *theStatusBar = GetStatusBar(); @@ -682,10 +683,8 @@ void wxFrame::IconizeChildFrames(bool bIconize) // them appear in the taskbar because they are, by virtue of this // style, not managed by the taskbar - instead leave Windows take care // of them -#ifdef __WIN95__ if ( win->GetWindowStyle() & wxFRAME_TOOL_WINDOW ) continue; -#endif // Win95 // the child MDI frames are a special case and should not be touched by // the parent frame - instead, they are managed by the user @@ -727,7 +726,7 @@ WXHICON wxFrame::GetDefaultIcon() const // preprocessing // --------------------------------------------------------------------------- -bool wxFrame::MSWTranslateMessage(WXMSG* pMsg) +bool wxFrame::MSWDoTranslateMessage(wxFrame *frame, WXMSG *pMsg) { if ( wxWindow::MSWTranslateMessage(pMsg) ) return true; @@ -735,14 +734,14 @@ bool wxFrame::MSWTranslateMessage(WXMSG* pMsg) #if wxUSE_MENUS && wxUSE_ACCEL && !defined(__WXUNIVERSAL__) // try the menu bar accels wxMenuBar *menuBar = GetMenuBar(); - if ( !menuBar ) - return false; + if ( menuBar ) + { + const wxAcceleratorTable& acceleratorTable = menuBar->GetAccelTable(); + return acceleratorTable.Translate(frame, pMsg); + } +#endif // wxUSE_MENUS && wxUSE_ACCEL - const wxAcceleratorTable& acceleratorTable = menuBar->GetAccelTable(); - return acceleratorTable.Translate(this, pMsg); -#else return false; -#endif // wxUSE_MENUS && wxUSE_ACCEL } // --------------------------------------------------------------------------- @@ -952,39 +951,6 @@ WXLRESULT wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lPara switch ( message ) { -#if defined(__SMARTPHONE__) || defined(__POCKETPC__) - case WM_ACTIVATE: - { - SHACTIVATEINFO* info = (SHACTIVATEINFO*) m_activateInfo; - if (info) - SHHandleWMActivate(GetHwnd(), wParam, lParam, info, FALSE); - - // This implicitly sends a wxEVT_ACTIVATE_APP event - if (wxTheApp) - wxTheApp->SetActive(wParam != 0, FindFocus()); - break; - } - case WM_SETTINGCHANGE: - { - SHACTIVATEINFO* info = (SHACTIVATEINFO*) m_activateInfo; - if (info) - SHHandleWMSettingChange(GetHwnd(), wParam, lParam, info); - processed = true; - break; - } - case WM_HIBERNATE: - { - wxActivateEvent event(wxEVT_HIBERNATE, true, wxID_ANY); - event.SetEventObject(wxTheApp); - - if (wxTheApp) - { - processed = wxTheApp->ProcessEvent(event); - } - break; - } -#endif - case WM_CLOSE: // if we can't close, tell the system that we processed the // message - otherwise it would close us