Menu lässt sich nicht ändern



  • Hi,
    ich habe folgenden Code :

    MENUITEMINFO info;
    ZeroMemory(&info,sizeof(info));
    info.cbSize         =sizeof(info);
    info.fMask          =MFT_STRING;
    info.dwTypeData         ="Test";
    info.cch            =lstrlen("Test");
    
    if(FAILED(SetMenuItemInfo(hMenu,ID_NEU,0,&info)))
    {
        MessageBox(0,0,0,0);
    }
    
    EnableMenuItem(hMenu,ID_NEU,MF_GRAYED);
    

    Hier sollte das MenuItem in Test umbenannt und disabled werden, doch es wird nur deaktiviert und der Text bleibt wie er war.
    Was muss geändert werden

    Danke

    M.T.



  • [cpp]
    MENUITEMINFO info;
    ZeroMemory(&info,sizeof(info));
    info.cbSize = sizeof(info);
    info.fMask = MIIM_TYPE | MIIM_STATE;
    info.fType = MFT_STRING;
    info.fState = MFS_DISABLED | MFS_GRAYED;
    info.dwTypeData = "Test";
    info.cch = lstrlen("Test");

    // SetMenuItemInfo laesst sich **nicht mit FAILED testen
    **if(!SetMenuItemInfo(hMenu,ID_NEU,0,&info))
    {
    MessageBox(0,0,0,0);
    }
    [/cpp]



  • Erweiterung:

    Die Makros FAILED und SUCCEEDED setzt man NUR für das Testen von HRESULT-Werten ein



  • @-King- Danke, hab mich in der MSDN verlesen 🙄

    @RenèG Danke, wieder was gelernt ...

    Kann man eigentlich auch die Obereinträge umbenennen? Wenn ja, wie?

    M.T.

    [ Dieser Beitrag wurde am 25.10.2002 um 15:46 Uhr von Manuel editiert. ]



  • Obereinträge ?



  • "Obereinträge" kann man auch mit SetMenuItemInfo() ändern, nur musst du als dritten Parameter TRUE angeben und als zweiten Parameter die Position des Items:

    SetMenuItemInfo(
        hMenu,      //Handle des Menüs
        0,      // Position des Obereintrags (0 ist der erste Menüpunkt)
        TRUE,       // muss in diesem Fall TRUE sein
        &mii);      // Pointer auf MENUITEMINFO-Struktur
    

Anmelden zum Antworten