Menü - Menueinträge verändern
-
Wie kann man ein MenuItem deaktivieren bzw. wieder aktivieren?
-
EnableMenuItem()
-
Ja klar. Aber wo bekomme ich die 1. Variable her?
BOOL EnableMenuItem(HMENU hmenu, UINT uIDEnableItem, UINT uEnable)
Mein Beispiel:
EnableMenuItem(???,ID_DATEI_SPEICHERN,MF_ENABLED);
[ Dieser Beitrag wurde am 03.03.2002 um 14:31 Uhr von hronny editiert. ]
-
so zb ...
CMenu MainMenu, *pSubMenu; MainMenu.LoadMenu(IDR_MENU1); pSubMenu=MainMenu.GetSubMenu(1); pSubMenu->EnableMenuItem(0,MF_BYPOSITION | MF_ENABLED); SetMenu(&MainMenu);
-
Ich raff das nich! images/smiles/icon_confused.gif
Den Code in die Menuroutine Laden integriert, Absturz!
void CSportyDlg::OnMenu_DateiLaden() { CMenu MainMenu, *pSubMenu; MainMenu.LoadMenu(IDR_Hauptmenu); pSubMenu=MainMenu.GetSubMenu(0); pSubMenu->EnableMenuItem(0, MF_ENABLED); SetMenu(&MainMenu); }
+----------+----+ +------------------+-------+ |Datei |? | |IDR_Hauptmenu | | +----------+----+ +------------------+-------+ |Neu |Info| |ID_DATEI_Neu |ID_Info| |Laden +----+ |ID_DATEI_LADEN +-------+ |Speichern | |ID_DATEI_SPEICHERN| +----------+ +------------------+ |Ende | |ID_ENDE | +----------+ +------------------+
[ Dieser Beitrag wurde am 03.03.2002 um 22:01 Uhr von hronny editiert. ]
-
dann probiers mal so:
void CSportyDlg::OnMenu_DateiLaden() { CMenu MainMenu, *pSubMenu; MainMenu = GetMenu(); pSubMenu=MainMenu.GetSubMenu(0); pSubMenu->EnableMenuItem(0, MF_ENABLED); SetMenu(&MainMenu); }
-
Du hast vergessen die Detach funktion aufzurufen.
Devil
-
Forlgende Fehlermeldung mit Deinem Code:
error C2582: 'CMenu' : 'Operator =' ist nicht verfuegbar
Fehler bezieht sich auf [code]MainMenu=GetMenu();[/code] denn bei GetMenu() muß ein Pointer vorne sein. Also pSubMenu:
void CSportyDlg::OnMenu_DateiLaden() { CMenu MainMenu, *pSubMenu, *pSub2Menu; pSubMenu=GetMenu(); pSub2Menu=MainMenu.GetSubMenu(0); pSub2Menu->EnableMenuItem(1, MF_ENABLED); //Detach(); SetMenu(&MainMenu); }
Trotzdem Absturz!! images/smiles/icon_eek.gif
[ Dieser Beitrag wurde am 04.03.2002 um 22:20 Uhr von hronny editiert. ]
[ Dieser Beitrag wurde am 04.03.2002 um 22:21 Uhr von hronny editiert. ]
-
void CSportyDlg::OnMenu_DateiLaden() { CMenu *MainMenu, *pSubMenu; MainMenu = GetMenu(); pSubMenu=MainMenu->GetSubMenu(0); pSubMenu->EnableMenuItem(0, MF_ENABLED); SetMenu(MainMenu); }
gehts so?
-
Geht jetzt!!! Aber bei [code]pSubMenu->EnableMenuItem(0,MF_ENABLED);[/code] muß die ID aus der Ressource gesetzt werden, dann funzt endlich!
void CSportyDlg::OnMenu_DateiLaden() { CMenu *MainMenu, *pSubMenu; MainMenu = GetMenu(); pSubMenu=MainMenu->GetSubMenu(0); pSubMenu->EnableMenuItem(ID_DATEI_SPEICHERN, MF_ENABLED); SetMenu(MainMenu); }
->Wäre was für die FAQ!
-
ok, mach mers auch in die FAQ, als alternative zu devils beitrag für dynamische menüs ...