www.mikrocontroller.net

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


Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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);
}

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: katzeklo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PostMessage() oder SendMessage()

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.