X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/09785dd38dd19ef122acd0933677fa86a0b3232e..b5435dccd098ae153c3b7b3b8fca8dd0d763986c:/src/msw/frame.cpp diff --git a/src/msw/frame.cpp b/src/msw/frame.cpp index 89e9716b0b..f17d23dddb 100644 --- a/src/msw/frame.cpp +++ b/src/msw/frame.cpp @@ -106,9 +106,6 @@ void wxFrame::Init() #if wxUSE_TOOLTIPS m_hwndToolTip = 0; #endif -#ifdef __WXWINCE__ - m_commandBar = 0; -#endif // Data to save/restore when calling ShowFullScreen m_fsStatusBarFields = 0; @@ -140,14 +137,6 @@ wxFrame::~wxFrame() { m_isBeingDeleted = TRUE; DeleteAllBars(); -#ifdef __WXWINCE__ - if (m_commandBar) - { - ::DestroyWindow((HWND) m_commandBar); - m_commandBar = NULL; - } -#endif - } // ---------------------------------------------------------------------------- @@ -275,6 +264,7 @@ void wxFrame::AttachMenuBar(wxMenuBar *menubar) } else // set new non NULL menu bar { +#ifndef __WXWINCE__ // Can set a menubar several times. if ( menubar->GetHMenu() ) { @@ -290,7 +280,7 @@ void wxFrame::AttachMenuBar(wxMenuBar *menubar) return; } } - +#endif InternalSetMenuBar(); } } @@ -300,25 +290,14 @@ void wxFrame::InternalSetMenuBar() #ifdef __WXMICROWIN__ // Nothing #elif defined(__WXWINCE__) - if (!m_commandBar) - { - // TODO: eventually have a wxCommandBar class - m_commandBar = (WXHWND) CommandBar_Create(wxGetInstance(), GetHwnd(), NewControlId()); - if (!m_commandBar) - { - wxFAIL_MSG( _T("failed to create commandbar") ); - return; - } - } - if (m_commandBar) + + if (!GetToolBar()) { - if (!CommandBar_InsertMenubarEx((HWND) m_commandBar, NULL, - (LPTSTR) (HMENU) m_hMenu, 0)) - { - wxFAIL_MSG( _T("failed to set menubar") ); - return; - } - CommandBar_DrawMenuBar((HWND) m_commandBar, 0); + wxToolBar* toolBar = new wxToolBar(this, -1, + wxDefaultPosition, wxDefaultSize, + wxBORDER_NONE | wxTB_HORIZONTAL, + wxToolBarNameStr, GetMenuBar()); + SetToolBar(toolBar); } #else if ( !::SetMenu(GetHwnd(), (HMENU)m_hMenu) ) @@ -445,6 +424,11 @@ bool wxFrame::ShowFullScreen(bool show, long style) wxToolBar* wxFrame::CreateToolBar(long style, wxWindowID id, const wxString& name) { +#ifdef __WXWINCE__ + // We may already have a toolbar from calling SetMenuBar. + if (GetToolBar()) + return GetToolBar(); +#endif if ( wxFrameBase::CreateToolBar(style, id, name) ) { PositionToolBar(); @@ -802,6 +786,10 @@ long wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) processed = HandlePaint(); break; + case WM_INITMENUPOPUP: + processed = HandleInitMenuPopup((WXHMENU) wParam); + break; + #if !defined(__WXMICROWIN__) && !defined(__WXWINCE__) case WM_MENUSELECT: { @@ -813,10 +801,6 @@ long wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) } break; - case WM_INITMENU: - processed = HandleInitMenu(); - break; - case WM_EXITMENULOOP: processed = HandleMenuLoop(wxEVT_MENU_CLOSE, wParam); break; @@ -839,13 +823,25 @@ long wxFrame::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam) return rc; } -// handle WM_INITMENU message -bool wxFrame::HandleInitMenu() +// handle WM_INITMENUPOPUP message +bool wxFrame::HandleInitMenuPopup(WXHMENU hMenu) { - wxMenuEvent event(wxEVT_MENU_OPEN, 0); + wxMenu* menu = NULL; + if (GetMenuBar()) + { + int nCount = GetMenuBar()->GetMenuCount(); + for (int n = 0; n < nCount; n++) + { + if (GetMenuBar()->GetMenu(n)->GetHMenu() == hMenu) + { + menu = GetMenuBar()->GetMenu(n); + break; + } + } + } + + wxMenuEvent event(wxEVT_MENU_OPEN, 0, menu); event.SetEventObject(this); return GetEventHandler()->ProcessEvent(event); } - -