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.