Forum: PC-Programmierung VC++ 6.0 MFC Anwendung: ON_WM_KEYDOWN


von Benedikt K. (benedikt)


Lesenswert?

Irgendwie schaffe ich es nicht, das Keydown Event zum Laufen zu 
bekommen. Ich möchte die Pfeiltasten abfragen, aber egal welche Taste 
ich drücke, es passiert nichts (außer das sich das Programm z.B. bei 
Return beendet).
Eigentlich sollte doch diese Funktion ausgeführt werden, sobald man eine 
Taste drückt ? Gibt es vielleicht irgendeine standardmäßig bereits 
vorhandene Funktion, die dieses Event abfängt ?
Alle anderen Events funktionieren (ich habe gerade mal Mousewheel und 
andere Sachen ausprobiert, die funktionieren alle wunderbar)

void CTestDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
  MessageBox ("Key pressed !");
  CDialog::OnKeyDown(nChar, nRepCnt, nFlags);
}

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

WM_KEYDOWN wird an das Fenster mit dem Eingabefocus gesandt. Das ist in 
der Regel nicht der Dialog selbst, sondern eines der darin dargestellten 
Controls.
Welches davon den Focus hat, wird durch einen gepunkteten Rahmen oder 
durch ein blinkendes Caret* hervorgehoben.

*) man könnte auch Cursor sagen, aber damit ist in Windows-Lingo der 
Mauszeiger gemeint.

von Benedikt K. (benedikt)


Lesenswert?

OK, das erklärt einiges.
Kann man das doch irgenwie (ohne großen Aufwand) hinbekommen, dass 
standardmäßig ein bestimmtes Fenster das Event bekommt ?

von katzeklo (Gast)


Lesenswert?

PostMessage() oder SendMessage()

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Zumindest bei einigen Aktivitäten (Mausklicks) dürfte es helfen, 
WM_PARENTNOTIFY auszuwerten.

Was genau willst Du denn erreichen? Wozu soll der Dialog selbst die 
Tastatureingaben erhalten?

von Karl H. (kbuchegg)


Lesenswert?

Wie immer ist auch diesmal
http://www.google.com
dein Freund.
Suchworte: Dialog WM_KEYDOWN

(Warum ist das eigentlich so schwer?)

Gleich der erste link
http://www.codeproject.com/dialog/pretransdialog01.asp
liefert eine möglich Lösung, in dem
PreTranslateMessage für den Dialog überschrieben wird.

von Benedikt K. (benedikt)


Lesenswert?

Karl heinz Buchegger wrote:
> Wie immer ist auch diesmal
> http://www.google.com
> dein Freund.
> Suchworte: Dialog WM_KEYDOWN
>
> (Warum ist das eigentlich so schwer?)

Danke, was war genau das was ich gesucht habe !

Lass mal das "Dialog" als Suchbegriff weg, dann kommt nur Müll.
Ich bin jetzt schon seit etwa 2 Stunden am googeln und finde eigentlich 
immer nur den gleichen Code den ich auch schon habe, aber nirgends ein 
Wort dazu, das der nicht das macht, nach was er aussieht...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.