KA wie ich das beschreiben soll :(
-
Mr Evil schrieb:
WM_KEYDOWN abfangen und pruefen ob es pfeil rechts oder links war {o;
aha und wie soll das funktionieren, weil ich hab das noch nie gemacht
-
schau einfach wie es bei den anderen messages wie WM_PAINT geloest ist - das verhaelt sich aehnlich - schau dazu einfach in die MSDN {=
-
danke aber das half mir auch nicht weiter
-
Shona schrieb:
danke aber das half mir auch nicht weiter
Du nutzt ja die MFC, also:
- In deine Dialog-Klasse gehen (Header).
- Dort auf eine leere Zeile innerhalb der Deklaration klicken.
- Im Eigenschaftenfenster "Meldungen" auswählen.
- Bis WM_KEYDOWN runterscrollen
- Im rechten Feld (ComboBox) "Hinzufügen OnKeyDown" anklicken
- Tada! Du hast einen Event-Handler namens OnKeyDown, der aufgerufen wird, wenn WM_KEYDOWN gesendet wird.Du kannst das natürlich auch manuell machen (Stichwort ON_WM_KEYDOWN() Makro).
-
Das hab ich doch schon längst drin aber ich weiß nicht wie ich die Pfeiltasten abfangen soll bzw. ob es rechts oder links war.
-
Na ja, du sagtest, du hättest das noch nie gemacht...

Dann sieh dir die Doku an (erster Parameter):
http://msdn.microsoft.com/de-de/library/983st27a(VS.80).aspx
(Tipp: VK_LEFT, VK_RIGHT)
-
Ich denke mal du meinst damit "nChar", soweit war ich auch schon aber ich hab keine Ahnung wie ich das schreiben soll.
Habe einfach mal aus dem Bauch heraus wie folgt angefangen aber ich weiß nicht ob das richtig ist und wie es weiter geht bzw. was da noch hin muss
if ((nChar == VK_LEFT || VK_RIGHT) && )
-
Sieht doch schon gut aus, glaube ich. Du musst dann auch nix mehr verunden, wenn du nur die Tasten Links und Rechts abfragen willst. Dass ein Key gedrückt wurde, ist ja schon klar. Und ich vermute, dich interessiert auch nicht, ob STRG, SHIFT oder sonstwas gedrückt ist. Also klatsch deinen Code darunter und sieh, was passiert!
-
_matze schrieb:
Sieht doch schon gut aus, glaube ich. Du musst dann auch nix mehr verunden, wenn du nur die Tasten Links und Rechts abfragen willst. Dass ein Key gedrückt wurde, ist ja schon klar. Und ich vermute, dich interessiert auch nicht, ob STRG, SHIFT oder sonstwas gedrückt ist. Also klatsch deinen Code darunter und sieh, was passiert!
Es funktioniert einwenig zumindest bewegt sich die linie, das problem ist aber das sie sich bei jeder anderen taste auch bewegt.
-

Dann zeig mal deine komplette OnKeyDown.
-
Das ist aber nur provesorisch um zu schauen ob das mit den Pfeiltasten funktioniert.
void CDSOZView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) { CPoint mouseXY; if ((nChar == VK_LEFT || VK_RIGHT)) { GetCursorPos(&mouseXY); // Aktuellen Punkt als letzten Punkt speichern m_iPrevX = mouseXY.x; Invalidate(); } CView::OnKeyDown(nChar, nRepCnt, nFlags); }
-
Shona schrieb:
Es funktioniert einwenig zumindest bewegt sich die linie, das problem ist aber das sie sich bei jeder anderen taste auch bewegt.
Das liegt an Deiner Bedingung, die prüft, ob die Ausdrücke
nChar == VK_LEFToder
VK_RIGHTwahr sind. Der erste ist es nur bei der Cursor-links Taste, der zweite aber immer (weil ungleich 0).
Richtig:
if (VK_LEFT == nChar || VK_RIGHT == nChar)
-
Danke jetzt funktioniert es bestens
