X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/57bd4c6031d438f11af0ec540136f49a928b923c..2e733ec74cdef0818ec171376f99049362b643b2:/src/msw/wince/tbarwce.cpp diff --git a/src/msw/wince/tbarwce.cpp b/src/msw/wince/tbarwce.cpp index 27a5d7b313..ce45117cf4 100644 --- a/src/msw/wince/tbarwce.cpp +++ b/src/msw/wince/tbarwce.cpp @@ -42,7 +42,7 @@ #include "wx/control.h" #endif -#if !defined(__GNUWIN32__) && !defined(__SALFORDC__) +#if !defined(__GNUWIN32__) #include "malloc.h" #endif @@ -54,6 +54,7 @@ #include #if defined(WINCE_WITHOUT_COMMANDBAR) #include + #include "wx/msw/wince/resources.h" #endif #include "wx/msw/wince/missing.h" @@ -96,8 +97,8 @@ public: m_bitmapIndex = -1; } - wxToolMenuBarTool(wxToolBar *tbar, wxControl *control) - : wxToolBarToolBase(tbar, control) + wxToolMenuBarTool(wxToolBar *tbar, wxControl *control, const wxString& label) + : wxToolBarToolBase(tbar, control, label) { m_nSepCount = 1; m_bitmapIndex = -1; @@ -151,9 +152,10 @@ wxToolBarToolBase *wxToolMenuBar::CreateTool(int id, clientData, shortHelp, longHelp); } -wxToolBarToolBase *wxToolMenuBar::CreateTool(wxControl *control) +wxToolBarToolBase * +wxToolMenuBar::CreateTool(wxControl *control, const wxString& label) { - return new wxToolMenuBarTool(this, control); + return new wxToolMenuBarTool(this, control, label); } // ---------------------------------------------------------------------------- @@ -191,30 +193,26 @@ bool wxToolMenuBar::Create(wxWindow *parent, return true; } -bool wxToolMenuBar::MSWCreateToolbar(const wxPoint& WXUNUSED(pos), const wxSize& WXUNUSED(size), wxMenuBar* menuBar) +bool wxToolMenuBar::MSWCreateToolbar(const wxPoint& WXUNUSED(pos), + const wxSize& WXUNUSED(size), + wxMenuBar *menuBar) { SetMenuBar(menuBar); if (m_menuBar) m_menuBar->SetToolBar(this); + HWND hwndParent = GetHwndOf(GetParent()); + wxCHECK_MSG( hwndParent, false, _T("should have valid parent HWND") ); + #if defined(WINCE_WITHOUT_COMMANDBAR) - // Create the menubar. - SHMENUBARINFO mbi; - - memset (&mbi, 0, sizeof (SHMENUBARINFO)); - mbi.cbSize = sizeof (SHMENUBARINFO); - mbi.hwndParent = (HWND) GetParent()->GetHWND(); -#ifdef __SMARTPHONE__ - mbi.nToolBarId = 5002; -#else - mbi.nToolBarId = 5000; -#endif - mbi.nBmpId = 0; - mbi.cBmpImages = 0; - mbi.dwFlags = 0 ; // SHCMBF_EMPTYBAR; + // create the menubar. + WinStruct mbi; + + mbi.hwndParent = hwndParent; + mbi.nToolBarId = wxIDM_SHMENU; mbi.hInstRes = wxGetInstance(); - if (!SHCreateMenuBar(&mbi)) + if ( !SHCreateMenuBar(&mbi) ) { wxFAIL_MSG( _T("SHCreateMenuBar failed") ); return false; @@ -222,7 +220,7 @@ bool wxToolMenuBar::MSWCreateToolbar(const wxPoint& WXUNUSED(pos), const wxSize& SetHWND((WXHWND) mbi.hwndMB); #else - HWND hWnd = CommandBar_Create(wxGetInstance(), (HWND) GetParent()->GetHWND(), GetId()); + HWND hWnd = CommandBar_Create(wxGetInstance(), hwndParent, GetId()); SetHWND((WXHWND) hWnd); #endif @@ -249,16 +247,14 @@ wxToolMenuBar::~wxToolMenuBar() // Return HMENU for the menu associated with the commandbar WXHMENU wxToolMenuBar::GetHMenu() { -#if defined(__HANDHELDPC__) - return 0; -#else +#if !defined(__HANDHELDPC__) if (GetHWND()) { - return (WXHMENU) (HMENU)::SendMessage((HWND) GetHWND(), SHCMBM_GETMENU, (WPARAM)0, (LPARAM)0); + return (WXHMENU)::SendMessage(GetHwnd(), SHCMBM_GETMENU, 0, 0); } - else - return 0; #endif + + return NULL; } // ---------------------------------------------------------------------------- @@ -403,7 +399,7 @@ bool wxToolMenuBar::Realize() const wxString& label = tool->GetLabel(); if ( !label.empty() ) { - button.iString = (int)label.c_str(); + button.iString = (int)label.wx_str(); } } @@ -486,24 +482,28 @@ bool wxToolMenuBar::Realize() return true; } -bool wxToolMenuBar::MSWCommand(WXUINT WXUNUSED(cmd), WXWORD id) +bool wxToolMenuBar::MSWCommand(WXUINT WXUNUSED(cmd), WXWORD id_) { - wxToolBarToolBase *tool = FindById((int)id); + const int id = (signed short)id_; + + wxToolBarToolBase *tool = FindById(id); if ( !tool ) { - if (m_menuBar) + bool checked = false; + if ( m_menuBar ) { wxMenuItem *item = m_menuBar->FindItem(id); - if (item && item->IsCheckable()) + if ( item && item->IsCheckable() ) { item->Toggle(); + checked = item->IsChecked(); } } wxCommandEvent event(wxEVT_COMMAND_MENU_SELECTED); event.SetEventObject(this); event.SetId(id); - event.SetInt(id); + event.SetInt(checked); return GetEventHandler()->ProcessEvent(event); }