#include "wx/menu.h"
#ifndef WX_PRECOMP
- #include "wx/msw/wrapcctl.h" // include <commctrl.h> "properly"
#include "wx/frame.h"
#include "wx/utils.h"
#include "wx/intl.h"
#endif
#include "wx/msw/private.h"
+#include "wx/msw/wrapcctl.h" // include <commctrl.h> "properly"
#ifdef __WXWINCE__
#include <windows.h>
UpdateAccel(pItem);
#endif // wxUSE_ACCEL
- UINT flags = 0;
+ // we should support disabling the item even prior to adding it to the menu
+ UINT flags = pItem->IsEnabled() ? MF_ENABLED : MF_GRAYED;
// if "Break" has just been called, insert a menu break before this item
// (and don't forget to reset the flag)
// id is the numeric id for normal menu items and HMENU for submenus as
// required by ::AppendMenu() API
- UINT id;
+ UINT_PTR id;
wxMenu *submenu = pItem->GetSubMenu();
if ( submenu != NULL ) {
wxASSERT_MSG( submenu->GetHMenu(), wxT("invalid submenu") );
submenu->SetParent(this);
- id = (UINT)submenu->GetHMenu();
+ id = (UINT_PTR)submenu->GetHMenu();
flags |= MF_POPUP;
}
for ( i = 0, it = m_menus.begin(); i < count; i++, it++ )
{
if ( !::AppendMenu((HMENU)m_hMenu, MF_POPUP | MF_STRING,
- (UINT)(*it)->GetHMenu(),
+ (UINT_PTR)(*it)->GetHMenu(),
m_titles[i].wx_str()) )
{
wxLogLastError(wxT("AppendMenu"));
int mswpos = MSWPositionForWxMenu(GetMenu(pos),pos);
- UINT id;
+ UINT_PTR id;
UINT flagsOld = ::GetMenuState((HMENU)m_hMenu, mswpos, MF_BYPOSITION);
if ( flagsOld == 0xFFFFFFFF )
{
{
// HIBYTE contains the number of items in the submenu in this case
flagsOld &= 0xff;
- id = (UINT)::GetSubMenu((HMENU)m_hMenu, mswpos);
+ id = (UINT_PTR)::GetSubMenu((HMENU)m_hMenu, mswpos);
}
else
{
info.fType = MFT_STRING;
info.cch = label.length();
info.dwTypeData = wx_const_cast(wxChar *, label.wx_str());
- if ( !SetMenuItemInfo(GetHmenu(), id, TRUE, & info) )
+ if ( !SetMenuItemInfo(GetHmenu(), id, TRUE, &info) )
{
wxLogLastError(wxT("SetMenuItemInfo"));
}
if ( !::InsertMenu(GetHmenu(), (UINT)mswpos,
MF_BYPOSITION | MF_POPUP | MF_STRING,
- (UINT)GetHmenuOf(menu), title.wx_str()) )
+ (UINT_PTR)GetHmenuOf(menu), title.wx_str()) )
{
wxLogLastError(wxT("InsertMenu"));
}
#else
if ( !::InsertMenu(GetHmenu(), mswpos,
MF_BYPOSITION | MF_POPUP | MF_STRING,
- (UINT)GetHmenuOf(menu), title.wx_str()) )
+ (UINT_PTR)GetHmenuOf(menu), title.wx_str()) )
{
wxLogLastError(wxT("InsertMenu"));
}
}
#else
if ( !::AppendMenu(GetHmenu(), MF_POPUP | MF_STRING,
- (UINT)submenu, title.wx_str()) )
+ (UINT_PTR)submenu, title.wx_str()) )
{
wxLogLastError(wxT("AppendMenu"));
}
nAccelCount += (*it)->CopyAccels(&accelEntries[nAccelCount]);
}
- m_accelTable = wxAcceleratorTable(nAccelCount, accelEntries);
+ SetAcceleratorTable(wxAcceleratorTable(nAccelCount, accelEntries));
delete [] accelEntries;
}