Autor | Thema: WM_COMMAND | | Datum:21.04.02 12:25 
(mail@stschnell.de) | |
Hallo Community,
bastele seit einiger Zeit an dynamischen Menüs, sprich z. B. Menüs die sich auf Wunsch von Deutsch in English wandeln, Menüpunkte hinzukommen, und und und
Leider bin ich mit der Abfrage von den Menüs noch nicht so zufrieden, denn bisher frage ich die über WinAPI kreierten Menüs mit %MenuItem ab. Das funktioniert aber nur wenn ich mit der Maus ein Menü anwähle. Versuche ich es über z. B. Alt + D (für das Dateimenü) so funktioniert es nicht, F10 und dann D hingegen geht wieder.
Im Standard übergibt Windows ja eine Meldung via WM_COMMAND an das Programm, nur leider weiss ich nicht, wie ich diese Meldung abfangen kann. Habe es schon mit %Message und %LastMessage versucht, jedoch ohne durchschlagenden Erfolg.
Wie kann ich WM_COMMAND abfangen / abfragen, um auch über die Tastenkombinationen z. B. Alt + H zu meiner Aktion zu kommen?
Danke für Eure Antworten.
Tschüss
Stefan Schnell
|
| | Datum:30.04.02 20:12 
(ps@burghardt-ib.de) | |
Hallo, ich kämpfe zur Zeit mit ganz ähnlichen problemen (siehe meinen Beitrag Messagehandling, ich hab bis jetzt keinen weg gefunden vernüftig an die wm_command notifications ranzukommen, auch nicht über %Notifcode der Api-Funktion GetMessage o.ä. Das mit den Tasetenkombinationen löst nicht immer wm_command aus, Alt+F4 z.B. löst einen wm_syscommand(274) aus, der dann weiter ausgewertet werden könnte
sorry...
Philipp
|
| | Datum:02.05.02 17:08 
(andreas@andreas-miethe.de) | |
Hallo Stefan,
am einfachsten ist es wenn Du fuer jedes Menuitem einen Hotkey erstellst. So mache ich es zumindest und komme damit gut klar.
Gruss
Andreas
Beispiel:
'--------------------------------------------------
DEF RegisterHotKey(4) !"USER32","RegisterHotKey"
DEF UnregisterHotKey(2) !"USER32","UnregisterHotKey"
DEF &WM_HOTKEY $0312
UserMessages &WM_HOTKEY
Declare Ende%
CLS
PopUp "&Programm"
AppendMenu 100,"Ende\tALT+E"
AppendMenu 101,"Was anderes STRG\tSTRG+W"
AppendMenu 102,"Was anderes SHIFT\tSHIFT+T"
RegisterHotKey(%HWND,10,1,69)'Handle,HotkeyID,ALT(1),Code(E)
RegisterHotKey(%HWND,11,2,87)'Handle,HotkeyID,STRG(2),Code(W)
RegisterHotKey(%HWND,12,4,84)'Handle,HotkeyID,STRG(3),Code(W)
Whilenot ende%
Waitinput
If MenuItem(100)
@MessageBox("Programm-Ende","Beenden ???",0)
Ende% = 1
ElseIf Menuitem(101)
@Messagebox("Was anderes mit STRG","Meldung",0)
ElseIf Menuitem(102)
@Messagebox("Was anderes mit SHIFT","Meldung",0)
ElseIf %UMessage = &WM_HOTKEY
'Hotkeys abfragen
If &UWParam = 10
@MessageBox("Programm-Ende","Beenden ???",0)
Ende% = 1
ElseIf &UWParam = 11
@Messagebox("Was anderes mit STRG","Meldung",0)
ElseIf &UWParam = 12
@Messagebox("Was anderes mit SHIFT","Meldung",0)
EndIf
EndIf
EndWhile
UnRegisterHotKey(%Hwnd,10)
UnRegisterHotKey(%Hwnd,11)
UnRegisterHotKey(%Hwnd,12)
End
'--------------------------------------------------
|
| | Datum: 07.05.02 21:50 
(mail@stschnell.de) | |
Hallo Philipp,
ich habe den Dialog verfolgt und hier eine Chance gesehen, die sich leider nicht erfüllt hat; so weit so gut, vielen Dank.
Hallo Andreas,
Deinen Tip habe ich realisiert, löst zwar nicht mein Problem, ist aber ein super Hinweis, vielen Dank.
Tschüss
Stefan
|
|
|