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); }
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.
OK, das erklärt einiges. Kann man das doch irgenwie (ohne großen Aufwand) hinbekommen, dass standardmäßig ein bestimmtes Fenster das Event bekommt ?
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?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.