Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 242992 (4428)
  Suchen
 Zurück zur Übersicht
 AutorThema: WM_COMMAND
Stefan Schnell
Datum:21.04.02 12:25 Antwortenals Email verschicken (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



Philipp Sternberg
Datum:30.04.02 20:12 Antwortenals Email verschicken (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


Andreas Miethe
Datum:02.05.02 17:08 Antwortenals Email verschicken (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
'--------------------------------------------------



Stefan Schnell
Datum: 07.05.02 21:50 Antwortenals Email verschicken (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



 Zurück zur Übersicht