Ergänzung in die FAQ...



  • Hi!

    Ich füge da noch eine Ergänzung zum MFC-FAQ Titel "Menüeinträge verändern" zu....

    Es geht auch einfacher, als da Beschrieben!
    So hier:

    HMENU hMenu = ::GetMenu(m_hWnd); //m_hWnd ist KEINE Variable, und mann muss auch nichts tun! Einfach so übernhemen
    EnableMenuItem(hMenu, DEINE_ID_DES_MENU_EINTRAGES, MF_BYCOMMAND | MF_ENABLED); //Enabled AKTIVIERT den Eintrag, MF_GRAYED DEAKTIVIERT den Eintrag.
    

    Diese Funktion ist allerdings im UpdateCommandUi aufzurufen!
    Zb, ich möchte, dass wenn ich eine Datei geöffnet habe (IDC_OPEN), dass dan das Schliessenfeld (ID_FILE_CLOSE) aktiviert wird.
    Dann füge ich eine Funktion COMMAND_UI, abgeleitet von der IDC_OPEN hinzu.
    In diese Funktion schreibe ich dann:

    HMENU hMenu = ::GetMenu(m_hWnd);
    EnableMenuItem(hMenu, ID_FILE_CLOSE, MF_BYCOMMAND | MF_ENABLED);
    

    Kurz zusammengefasst sollte der COde dann so aussehen:

    void::OnUpdateOpen(CCmdUI* pCmdUI) //Open ist automatisch abgeleitet worden von IDC_OPEN
    {
    HMENU hMenu = ::GetMenu(m_hWnd);
    EnableMenuItem(hMenu, ID_FILE_CLOSE, MF_BYCOMMAND | MF_ENABLED);  
    }
    

    Jetzt wird das Feld SCHLIESSEN aktiviert, sobald eine Datei geöffnet wurde. Das geht auch umgekehrt! Ich füge COMMAND_UI abgeleitet von ID_FILE_CLOSE hinzu und dann

    EnableMenuItem(hMenu, ID_FILE_CLOSE, MF_BYCOMMAND | MF_GRAYED);

    Hiermit wird der Eintrag SCHLIESSEN wieder dekativiert, sobald man durch Schliessen die Datei geschlossen hat!
    ON_COMMAND_UI zu der Entsprechenden ID fügt man im KlassenAssistent hinzu!

    [ Dieser Beitrag wurde am 08.09.2002 um 10:55 Uhr von Programmer85 editiert. ]

    [ Dieser Beitrag wurde am 08.09.2002 um 10:57 Uhr von Programmer85 editiert. ]



  • Mach daraus noch reines MFC, dann kommts in die FAQ.


Log in to reply