Tastaturevents abfangen

Hallo,

ich habe mir eine kleine dialogfeldbasierte MFC- Anwendung in VC++ geschrieben. Was mir jetzt noch fehlt, ist eine 1- Tastenbedienung mit bespielsweise F- Tasten. Drücke ich F2, dann soll eine Methode ausgeführt werden, die auch hinter einem Button liegt.

Ich hab’s bisher mit der OnKeyUp- Methode probiert. Die funktioniert allerdings nur, solange sich keine Buttons, Textfelder,… auf der Oberfläche befinden, die den Fokus bekommen.

Ich hab gelesen, dass das Ganze mit Acceleratoren und nem Callback- Handler funktionieren könnte. Allerdings weiss ich nicht, wie ich den Handler in meine dialogfeldbasierte Anwendung einbauen muss, damit er aufgerufen wird (Programm hat ja keine WinMain).

Hat jemand ne Idee?

Danke und Gruß
ziba

Hallo ziba,

das Formular hat eine Eigenschaft KeyPreview oder so ähnlich. Setzte diese Eigenschaft auf True, dann werden alle Tasteneingaben erst auf das Formular geleitet.

Manfred

Danke erstmal für die Antwort.
Die Idee klingt gut. Hab gleich mal bei MSDN gesucht und für C++ die Methode
__property void set_KeyPreview(bool);
gefunden, die genau das machen soll, was ich brauche. Allerdings ist mein Formular von der Klasse CDialog abgeleitet und die bietet diese Methode nicht (und auch keine ähnliche) an. :frowning:
Werd mal weitersuchen. Irgendwie muss es ja gehen. F1 wirkt ja auch global.

Gruß
ziba

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Ziba !

Vielleicht gehts mit der PreTranslateMessage - Methode ?

mfg
Christof

Danke, das isses!!!

Hab die PretranslateMessage- Methode überladen. In wParam steht der Code der gedrückten Taste auf den ich reagieren kann und wenn ich false zurückgebe, werden die Events auch an den Dialog weitergegeben.

gruß
ziba

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]