Entwickler-Ecke
Windows API - Joystick-POV auswerten
Tilman - Di 20.11.07 15:09
Titel: Joystick-POV auswerten
Ich möchte den Zustand des Joystick-POVs auswerten, und zwar so als würde es sich um 4 Tasten (so wie beim Steuerkreuz eines Gamepads) handeln. Allerdings soll die Auswertung auch funktionieren wenn ein Controller mit Continuous POV angeschlossen ist. Bisher funzt es so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| joyGetPosEx(jid,@jie);
shape1.Brush.Color := clWhite; shape2.Brush.Color := clWhite; shape3.Brush.Color := clWhite; shape4.Brush.Color := clWhite;
if ((jie.dwPOV > JOY_POVLEFT) or (jie.dwPOV < JOY_POVRIGHT)) and (jie.dwPOV <> 65535) then shape1.Brush.Color := clRed; if (jie.dwPOV > JOY_PovForward) and (jie.dwPOV < JOY_PovBackward) then shape2.Brush.Color := clRed; if (jie.dwPOV > JOY_PovRight) and (jie.dwPOV < JOY_POVLeft) then shape3.Brush.Color := clRed; if (jie.dwPOV > JOY_POVbackward) and (jie.dwPOV <> 65535) then shape4.Brush.Color := clRed; |
aber irgendwie finde ich das Ergebnis unbefriedigend... daher wollte ich fragen ob jemand eine elegantere Lösung kennt.
Andreas Pfau - So 06.01.08 01:30
Hi,
laut MSDN ist dwPOV = -1 wenn der POV losgelassen wurde, ansonsten der Auslenkungswinkel durch 100.
Also würd ich eine TPaintBox nehmen, welche einen Pfeil darstellt. Wenn dwPOV = -1, dann zeichne nix, ansonsten einen Pfeil mit den Koordinaten:
Delphi-Quelltext
1: 2:
| dX := NullpunktX + Round(Laenge * Cos(Pi / 2 - jie.dwPOV * PI / 50)); dY := NullpunktX + Round(Laenge * Sin(Pi / 2 - jie.dwPOV * PI / 50)); |
Tilman - So 06.01.08 12:59
Danke, aber es läuft jetzt gut und den Code sieht ja keiner mehr, werde daher nix mehr ändern ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!