if ( !label.empty() )
{
if ( !::InsertMenu(hMenu, 0u, MF_BYPOSITION | MF_STRING,
- (unsigned)idMenuTitle, m_title) ||
+ (unsigned)idMenuTitle, m_title.wx_str()) ||
!::InsertMenu(hMenu, 1u, MF_BYPOSITION, (unsigned)-1, NULL) )
{
wxLogLastError(wxT("InsertMenu"));
info.fMask = MIIM_TYPE;
info.fType = MFT_STRING;
info.cch = m_title.length();
- info.dwTypeData = (LPTSTR) m_title.c_str();
+ info.dwTypeData = wx_const_cast(wxChar *, m_title.wx_str());
if ( !SetMenuItemInfo(hMenu, 0, TRUE, & info) )
{
wxLogLastError(wxT("SetMenuItemInfo"));
#else
if ( !ModifyMenu(hMenu, 0u,
MF_BYPOSITION | MF_STRING,
- (unsigned)idMenuTitle, m_title) )
+ (unsigned)idMenuTitle, m_title.wx_str()) )
{
wxLogLastError(wxT("ModifyMenu"));
}
if ( item && item->IsCheckable() )
item->Toggle();
- // get the checked status of the menu item: note that menuState is the
- // old state of the menu, so the test for MF_CHECKED must be inverted
+ // get the status of the menu item: note that it has been just changed
+ // by Toggle() above so here we already get the new state of the item
UINT menuState = ::GetMenuState(GetHmenu(), id, MF_BYCOMMAND);
- SendEvent(id, !(menuState & MF_CHECKED));
+ SendEvent(id, menuState & MF_CHECKED);
}
return true;
if ( m_hMenu != 0 )
return m_hMenu;
- if (!GetToolBar())
- return 0;
+ wxToolMenuBar * const bar = wx_static_cast(wxToolMenuBar *, GetToolBar());
+ if ( !bar )
+ return NULL;
- HWND hCommandBar = (HWND) GetToolBar()->GetHWND();
- HMENU hMenu = (HMENU)::SendMessage(hCommandBar, SHCMBM_GETMENU, (WPARAM)0, (LPARAM)0);
+ HWND hCommandBar = GetHwndOf(bar);
- // hMenu may be zero on Windows Mobile 5. So add the menus anyway.
- if (1) // (hMenu)
- {
- TBBUTTON tbButton;
- memset(&tbButton, 0, sizeof(TBBUTTON));
- tbButton.iBitmap = I_IMAGENONE;
- tbButton.fsState = TBSTATE_ENABLED;
- tbButton.fsStyle = TBSTYLE_DROPDOWN | TBSTYLE_NO_DROPDOWN_ARROW | TBSTYLE_AUTOSIZE;
+ // notify comctl32.dll about the version of the headers we use before using
+ // any other TB_XXX messages
+ SendMessage(hCommandBar, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
- size_t i;
- for (i = 0; i < GetMenuCount(); i++)
- {
- HMENU hPopupMenu = (HMENU) GetMenu(i)->GetHMenu() ;
- tbButton.dwData = (DWORD)hPopupMenu;
- wxString label = wxStripMenuCodes(GetLabelTop(i));
- tbButton.iString = (int) label.c_str();
+ TBBUTTON tbButton;
+ wxZeroMemory(tbButton);
+ tbButton.iBitmap = I_IMAGENONE;
+ tbButton.fsState = TBSTATE_ENABLED;
+ tbButton.fsStyle = TBSTYLE_DROPDOWN |
+ TBSTYLE_NO_DROPDOWN_ARROW |
+ TBSTYLE_AUTOSIZE;
- int position = i;
+ for ( unsigned i = 0; i < GetMenuCount(); i++ )
+ {
+ HMENU hPopupMenu = (HMENU) GetMenu(i)->GetHMenu();
+ tbButton.dwData = (DWORD)hPopupMenu;
+ wxString label = wxStripMenuCodes(GetLabelTop(i));
+ tbButton.iString = (int) label.wx_str();
- tbButton.idCommand = NewControlId();
- if (!::SendMessage(hCommandBar, TB_INSERTBUTTON, position, (LPARAM)&tbButton))
- {
- wxLogLastError(wxT("TB_INSERTBUTTON"));
- }
+ tbButton.idCommand = NewControlId();
+ if ( !::SendMessage(hCommandBar, TB_INSERTBUTTON, i, (LPARAM)&tbButton) )
+ {
+ wxLogLastError(wxT("TB_INSERTBUTTON"));
}
}
- m_hMenu = (WXHMENU) hMenu;
+
+ m_hMenu = bar->GetHMenu();
return m_hMenu;
-#else
+#else // !__WXWINCE__
if ( m_hMenu != 0 )
return m_hMenu;
{
if ( !::AppendMenu((HMENU)m_hMenu, MF_POPUP | MF_STRING,
(UINT)(*it)->GetHMenu(),
- m_titles[i]) )
+ m_titles[i].wx_str()) )
{
wxLogLastError(wxT("AppendMenu"));
}
}
return m_hMenu;
-#endif
+#endif // __WXWINCE__/!__WXWINCE__
}
int wxMenuBar::MSWPositionForWxMenu(wxMenu *menu, int wxpos)
info.fMask = MIIM_TYPE;
info.fType = MFT_STRING;
info.cch = label.length();
- info.dwTypeData = (LPTSTR) label.c_str();
+ info.dwTypeData = wx_const_cast(wxChar *, label.wx_str());
if ( !SetMenuItemInfo(GetHmenu(), id, TRUE, & info) )
{
wxLogLastError(wxT("SetMenuItemInfo"));
#else
if ( ::ModifyMenu(GetHmenu(), mswpos, MF_BYPOSITION | MF_STRING | flagsOld,
- id, label) == (int)0xFFFFFFFF )
+ id, label.wx_str()) == (int)0xFFFFFFFF )
{
wxLogLastError(wxT("ModifyMenu"));
}
if ( !::InsertMenu(GetHmenu(), (UINT)mswpos,
MF_BYPOSITION | MF_POPUP | MF_STRING,
- (UINT)GetHmenuOf(menu), title) )
+ (UINT)GetHmenuOf(menu), title.wx_str()) )
{
wxLogLastError(wxT("InsertMenu"));
}
HMENU hPopupMenu = (HMENU) menu->GetHMenu() ;
tbButton.dwData = (DWORD)hPopupMenu;
wxString label = wxStripMenuCodes(title);
- tbButton.iString = (int) label.c_str();
+ tbButton.iString = (int) label.wx_str();
tbButton.idCommand = NewControlId();
if (!::SendMessage((HWND) GetToolBar()->GetHWND(), TB_INSERTBUTTON, pos, (LPARAM)&tbButton))
#else
if ( !::InsertMenu(GetHmenu(), mswpos,
MF_BYPOSITION | MF_POPUP | MF_STRING,
- (UINT)GetHmenuOf(menu), title) )
+ (UINT)GetHmenuOf(menu), title.wx_str()) )
{
wxLogLastError(wxT("InsertMenu"));
}
HMENU hPopupMenu = (HMENU) menu->GetHMenu() ;
tbButton.dwData = (DWORD)hPopupMenu;
wxString label = wxStripMenuCodes(title);
- tbButton.iString = (int) label.c_str();
+ tbButton.iString = (int) label.wx_str();
tbButton.idCommand = NewControlId();
if (!::SendMessage((HWND) GetToolBar()->GetHWND(), TB_INSERTBUTTON, pos, (LPARAM)&tbButton))
}
#else
if ( !::AppendMenu(GetHmenu(), MF_POPUP | MF_STRING,
- (UINT)submenu, title) )
+ (UINT)submenu, title.wx_str()) )
{
wxLogLastError(wxT("AppendMenu"));
}