Kontextmenü mit aktiven/inaktiven Bitmaps erstellen



  • Hallo zusammen,

    ich habe in meiner App eine Funktion, die auf rechtsklick ein Kontextmenü aufmacht mithilfe von ON_WM_CONTEXTMENU(). Das funktioniert soweit, und innerhalb der zugehörigen Funktion erstelle ich mein Menü:

    CBitmap bmp, bmpAKT;
    bmp.LoadBitmap(IDB_BITMAP2);
    bmpAKT.LoadBitmap(IDB_BITMAP3);
    
    CMenu submenu;
    submenu.CreatePopupMenu();
    submenu.AppendMenu(MF_ENABLED, 4005, L"Wert bearbeiten");
    submenu.AppendMenu(MF_STRING, 4006, L"Wert l\u00f6schen");
    submenu.AppendMenu(MF_STRING, 4009, L"Wert verschieben");
    submenu.AppendMenu(MF_SEPARATOR, 0, L"");
    submenu.AppendMenu(MF_STRING, 4007, L"Men\u00fc schlie\u00DFen");
    submenu.SetMenuItemBitmaps(0, MF_BYPOSITION, &bmp, &bmpAKT);
    
    submenu.TrackPopupMenu(TPM_LEFTALIGN, ptMousePos.x, ptMousePos.y, this);
    

    Dann habe ich noch den OnMenuSelect handler eingefügt und folgenden Code benutzt.

    MENUITEMINFO info;
    info.cbSize = sizeof(MENUITEMINFO); // must fill up this field
    info.fMask = MIIM_STATE;             // get the state of the menu item
    GetMenuItemInfo(hSysMenu, nItemID, FALSE, &info);
    
    if (info.fState & MF_CHECKED)
    	CheckMenuItem(hSysMenu, nItemID, MF_UNCHECKED);
    else
    	CheckMenuItem(hSysMenu, nItemID, MF_CHECKED);
    

    Wenn ich das Menü öffne, sind alle items unchecked, aber nach dem drüberfahren mit der Mausbleibt das item unchecked, erst wenn ich nochmal ein anderes item anwähle, wird das vorherige gecheked, also alles findet sozusagen verzögert statt.


Anmelden zum Antworten