Benutzer mit den meisten Antworten
CMenu item mit 32x32 Bitmaps passt sich nicht der Größe der Bitmap an unter XP

Frage
-
Mittels SetMenuItemBitmaps setzen wir 32x32 Bitmaps an den menu items. Unter Win7 klappt das wunderbar. Unter XP bleiben die items 16 pixel hoch und die Bitmaps werden abgeschnitten. Kann man die Höhe der items beeinflussen, ohne owner drawn menus zu verwenden?
Besten Dank,
T. Müller
Antworten
-
Es kommt darauf an, wie Du das Menu mit einem Bitmap versiehst, es gibt da zwei Wege. Hier mein Ergebnis in XP:
Ich habe für das obige Beispiel für beide Fälle das gleiche Bitmap genommen, dass oben auch im bild mit im Screen Capture drin ist. Das Bitmap in meinem Beispiel ist 28x28, die 4 kleinen quadrate jeweils 16x16. Der unterschied ist, einmal nutze ich SetMenuItemBitmaps, einmal SetMenuItemInfo.
Hier ein Copdeschnipsel:
void CBmpmenuDlg::OnContextMenu(CWnd* pWnd, CPoint point) { CBitmap l_Bmp_ics; CMenu* l_Menu_pics=new CMenu(); CMenu* l_PopupMenu_pics; l_Bmp_ics.LoadBitmap(IDB_BITMAP); l_Menu_pics->LoadMenu(IDR_MENU); l_PopupMenu_pics=l_Menu_pics->GetSubMenu(0); l_PopupMenu_pics->SetMenuItemBitmaps(ID_ITEM_ITEM2, MF_BYCOMMAND, &l_Bmp_ics, &l_Bmp_ics); MENUITEMINFO mii = { sizeof(mii) }; mii.fMask = MIIM_BITMAP; mii.hbmpItem = (HBITMAP)l_Bmp_ics; SetMenuItemInfo(l_PopupMenu_pics->m_hMenu, ID_ITEM_ITEM1, MF_BYCOMMAND, &mii); l_PopupMenu_pics->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON , point.x, point.y , this); delete l_Menu_pics; }
Best regards
Bordon
Note: Posted code pieces may not have a good programming style and may not perfect. It is also possible that they do not work in all situations. Code pieces are only indended to explain something particualar.
Alle Antworten
-
Es kommt darauf an, wie Du das Menu mit einem Bitmap versiehst, es gibt da zwei Wege. Hier mein Ergebnis in XP:
Ich habe für das obige Beispiel für beide Fälle das gleiche Bitmap genommen, dass oben auch im bild mit im Screen Capture drin ist. Das Bitmap in meinem Beispiel ist 28x28, die 4 kleinen quadrate jeweils 16x16. Der unterschied ist, einmal nutze ich SetMenuItemBitmaps, einmal SetMenuItemInfo.
Hier ein Copdeschnipsel:
void CBmpmenuDlg::OnContextMenu(CWnd* pWnd, CPoint point) { CBitmap l_Bmp_ics; CMenu* l_Menu_pics=new CMenu(); CMenu* l_PopupMenu_pics; l_Bmp_ics.LoadBitmap(IDB_BITMAP); l_Menu_pics->LoadMenu(IDR_MENU); l_PopupMenu_pics=l_Menu_pics->GetSubMenu(0); l_PopupMenu_pics->SetMenuItemBitmaps(ID_ITEM_ITEM2, MF_BYCOMMAND, &l_Bmp_ics, &l_Bmp_ics); MENUITEMINFO mii = { sizeof(mii) }; mii.fMask = MIIM_BITMAP; mii.hbmpItem = (HBITMAP)l_Bmp_ics; SetMenuItemInfo(l_PopupMenu_pics->m_hMenu, ID_ITEM_ITEM1, MF_BYCOMMAND, &mii); l_PopupMenu_pics->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON , point.x, point.y , this); delete l_Menu_pics; }
Best regards
Bordon
Note: Posted code pieces may not have a good programming style and may not perfect. It is also possible that they do not work in all situations. Code pieces are only indended to explain something particualar.