diff --git a/src/msw/menu.cpp b/src/msw/menu.cpp index d1f777f816..07541b8554 100644 --- a/src/msw/menu.cpp +++ b/src/msw/menu.cpp @@ -401,6 +401,9 @@ HBITMAP GetHBitmapForMenu(wxMenuItem *pItem, bool checked = true) return GetHbitmapOf(pItem->GetBitmap(checked)); } + //else: bitmap is not set + + return NULL; } #endif // wxUSE_IMAGE @@ -518,18 +521,19 @@ bool wxMenu::DoInsertOrAppend(wxMenuItem *pItem, size_t pos) WinStruct mii; mii.fMask = MIIM_STRING | MIIM_DATA; - if ( pItem->GetBitmap().IsOk() ) - { - mii.fMask |= MIIM_BITMAP; - mii.hbmpItem = GetHBitmapForMenu(pItem); - } - + // don't set hbmpItem for the checkable items as it would + // be used for both checked and unchecked state if ( pItem->IsCheckable() ) { mii.fMask |= MIIM_CHECKMARKS; mii.hbmpChecked = GetHBitmapForMenu(pItem, true); mii.hbmpUnchecked = GetHBitmapForMenu(pItem, false); } + else if ( pItem->GetBitmap().IsOk() ) + { + mii.fMask |= MIIM_BITMAP; + mii.hbmpItem = GetHBitmapForMenu(pItem); + } mii.cch = itemText.length(); mii.dwTypeData = const_cast(itemText.wx_str());