Tastendruck mit MFC auslesen

xKorbix

Grünschnabel
Hallo zusammen,
ich bin langsam am verzweifeln.
Ich versuche verzweifelt den Tastendruck der Pfeiltasten (hoch runter links rechts) auszulesen.
Ich weis dass das Problem hier im Forum schon gelöst wurde aber ich werde daraus nicht schlau.
Zudem möchte ich sagen das es MFC Neuland für mich ist. Ich habe irgendwas von OnKeyDown gelesen oder so, aber ich schaffe es einfach nicht
Am besten wär wenn mir jemand die Funktion posten könnte, mit der man den Tastendruck abrufen kann.

P.S. Wenn es mit Pfeiltasten schwer wird, kann ich mich auch mit (w a s d) zufrieden geben.

bitte um schnelle Antwort, hab für mein Projekt nur eine vorgegebene Zeit zur Verfügung

Danke im Vorraus

Korbi
 

sheel

I love Asm
Hi und Willkommen bei tutorials.de :)

Je nach VS-Version, die du verwendest, kann das Ganze etwas abweichen (wie die Menüeinträge heißen etc)
Aber grundsätzlich einmal:
-Rechte Maustaste auf den Dialog, "Ereignisse"
-Doppelklick auf WM_KEYDOWN in der WM_...-Liste
-Doppelklick auf WM_KEYUP in der WM_...-Liste (damit hast du für beide Ereignisse Funktionen generiert)
-OK
-Zum Code wechseln. Dort sollte OnKeyDown und OnKeyUp zu finden sein.

Diese Funktionen werden von Windows aus automatisch aufgerufen, beim Tastendrücken bzw. loslassen irgendeiner Taste. Noch sind beide ziemlich leer. Was bei welcher Taste getan werden soll kannst du jetzt reinschreiben. Um welche Taste es geht merkt man am ersten der Parameter, die die Funktion bekommt.

Also einfach ein paar if oder ein switch-case rein: Wenn w gedrückt, dann..., wenn s gedrückt, dann...

Gruß
 

xKorbix

Grünschnabel
Ich hab nun die Funktionen void CMFC_CameraDlg::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) und void CMFC_CameraDlg::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags).
Nun stellt sich aber das Problem, das diese Funktionen irgendwie nicht ausgefürt werden.(Hab stoppoint reingesetzt und es ist nie in die funktion gesprungen.

und was bringt mir in der funktion CDialog::OnKeyDown(nChar, nRepCnt, nFlags); ?

Gruß
Korbi
 

sheel

I love Asm
Nun stellt sich aber das Problem, das diese Funktionen irgendwie nicht ausgefürt werden.(Hab stoppoint reingesetzt und es ist nie in die funktion gesprungen.
Nur um sicher zu gehen: Hast du auch ein paar Tasten gedrückt?

und was bringt mir in der funktion CDialog::OnKeyDown(nChar, nRepCnt, nFlags); ?
Du meinst den Aufruf in den CMFC_CameraDlg::OnKeyDown?
Lass ihn einfach unverändert drin.
Der Rest vom System will auch noch was von den Tasten mitbekommen.
 

xKorbix

Grünschnabel
Also ich habe tasten gedrückt aber der springt nie in die funktion rein.
muss ich irgendwas mit UpdataData(false bzw. true) machen?
 

sheel

I love Asm
Nein. Wenn du willst kannst du mal das Projekt als Zip hier raufladen (geht direkt m Forum, ohne Fremdhoster).
Dann kann ich mir das genauer anschauen.
 

xKorbix

Grünschnabel
So im Anhang ist das Projekt.
Kurze Erklärung was ich eigentlich genau will:
- Bei klicken der pfeiltasten in IDD_MFC_CAMERA_DIALOG soll das erstmal in die textbox
angezeigt werden (später soll damit über microcontroler ein ferngesteuertes Auto
gesteuert werden.

Danke für die Arbeit im Vorraus.

MFG

Korbi

EDIT: Sorry hab gerade gemerkt hab ausversehen die ältere Datei ohne die Funktionen onKeyDown und onKeyUp hochgeladen aber das dürfe kein problem für dich darstellen, hast es warscheinlich sowieso mit 3 Handgriffen :D
 

Anhänge

  • MFC_Camera2.rar
    23 MB · Aufrufe: 26
Zuletzt bearbeitet:

_Helmuth_

Grünschnabel
Hallo,

die Tasten musst Du über die Funktion "PretranslateMassage" abfangen müssen und dort behandeln. Siehe die Ergänzung in Deinem Projekt.

mfg,
Helmuth
 

Anhänge

  • MFC_Camera.zip
    1,2 MB · Aufrufe: 46

xKorbix

Grünschnabel
WOOW Danke es geht. 1000 dank euch beiden, ich hätte das Projekt nie fertig bekommen.. :):)

wenn es keine Umstände bereitet hätte ich noch eine bitte. Wie schaffe ich es, wenn zum Beispiel Pfeil nach oben und pfeil nach links geklickt werden das dann (Pfeil nach oben und nach links) angezeigt wird.
d.h. ich möchte das zwei Eingaben gleichzeitig erkannt werde

P.S. ich hatte noch nie eine programmiersprache die so gewöhungsbedürftig ist :D

Gruß
Korbi
 
Zuletzt bearbeitet:

Neue Beiträge