Menu abfragen
-
Wie kann ich bestimmte Aktionen ausführen abhängig vom Menüpunkt, der ausgewählt wurde? Ich hatte es zuerst so versucht:
case WM_MENUSELECT: if(LOWORD(wParam)==ID) {...
Er hat zwar die folgende Aktion ausgeführt doch dies tat er schon wenn man nur die maus über den menüpunkt bewegte. Wie kann ich machen, dass er es erst nach einem Klick o.ä. aktiviert?
ciao,
flo
-
WM_COMMAND
-
Shlo schrieb:
WM_COMMAND
Ok, aber wie ruf ich die einzelnen Menüpunkte genau ab? Bei buttons is ja im LOWORD(wParam) die HMENU nummer z.b. drin, aber wie isses beim menu?
-
Deine Menu-Punkte haben eigentlich auch eine ID. Diese ID dann einfach auch mit LOWORD (wParam) in der WM_COMMAND abfragen.
-
Honk schrieb:
Deine Menu-Punkte haben eigentlich auch eine ID. Diese ID dann einfach auch mit LOWORD (wParam) in der WM_COMMAND abfragen.
Das klappt bei mir immer noch nicht.
Ich habe das menu IDR_MENU1 mit dem unterpunkt, der die folgende ID hat: ID_DATEI_BEENDEN. diese hat den wert 40005.case WM_COMMAND: switch(LOWORD(wParam)) { case ID_DATEI_BEENDEN: MessageBox(hwnd, "Datei-Beenden wurde aufgrufen", "Nachricht", MB_OK); return 0; } return 0;
-
Also laut MSDN(Using Menus) sollte das schon so stimmen! Das Menü hast du einfach in der dazugehörigen Fensterklasse angegeben, oder?
-
eigentlich ja...Ich habe es jetzt aber anders gelöst. Die einzelnen Menüpunkte haben ja auch ihre IDs als zahlen. Die habe ich jetzt eingesetzt statt ID_DATEI_BEENDEN. Das funktioniert jetzt
-
Hast du evtl. vergessen den Ressourcen-Header im Quellcode einzubinden