MFC Edit Control - Tastendruck-Event

Hallo,

wie kann ich ein Event für einen Tastendruck erstellen?
Wie geht sowas?
Visual Studio 2008 bietet leider nur Events wie EditChange etc. an, aber keines, wo ich Systemevents abfangen kann.

Ich möchte folgendes realisieren:
Wenn Pfeil nach oben gedrückt wird, soll die Double-Zahl um 2 erhöht werden, bei Pfeil nach unten um 2 verringert.
Es dürfen nur Zahlen, sowie genau 1 Punkt bzw. ein Komme zugelassen werden (ein Komma wird als Punkt ersetzt).

Dazu müsste ich die Tastatureingaben auswerten und manipulieren (ersetzten, löschen) bevor sie im Control dargestellt werden.

Habe leider dazu überhaupt gar nichts im Internet gefunden - bin kennte mich leider kaum mit MFC aus.

Besten Dank.

MfG
Peter

Also ich weiß jetzt nicht, ob die Pfeiltasten unter den Sonderfällen wie ESC und Return liegen, aber warum baust du dir nicht einfach eine OnkeyDown-Funktion für das jeweilige Steuerelement und fragst dann ab:

Wenn Pfeiltaste gedrückt,dann tue das.

Ich weiß jetzt aber nicht für was die Pfeiltasten stehen, also z.B. VK_DELETE für entf

Falls du das schon versucht hast und es nicht funktioniert,dann gehören die Tasten wohl doch zu den Sonderfällen. In dem Fall fällt mir nur ein,dass du die PretranslateMessage Funktion überschreibst.

Aber versuch es erst mal mit der OnkeyDown,dass sollte eigentlich schon funktionieren.

Zusatz
Hab ich vergessen zu schreiben:

Schau mal im Visual Studio nach WM_KEYDOWN.

Markier dazu den Dialog und dann wühl dich mal in Eigenschaften durch. Da kannst du die Funktion dann einrichten (Alternative wäre es, dass per Hand zu machen).

Schau mal im Visual Studio nach WM_KEYDOWN.

Das Event OnKeyDown gibt es leider beim Edit-Control nicht:
http://img39.imageshack.us/img39/8342/editcontrol.png

Wenn ich für WM_KEYDOWN eine Callbackfunktion für das Hauptdialogelement erstelle, dann wird die nie betreten, egal wo ich eine Taste drücke, egal wo sich der Cursor befindet.

Hmm,

dann musst du die PreTranslateMessage überschreiben. Ich kann nicht an meinen Rechner wo ich das gemacht habe, deswegen kann ich dir da jetzt nichts weiter zu sagen. Ansonsten nochmal googlen.

Mit der Funktion kannst du das nämlich vorher abfangen. Mehr fällt mir gerade nicht ein. Ein Kollege meinte mal man kann das noch irgendwie anders lösen,aber ich habs vergessen :frowning: