VB-Homepage Tipp 267

Joystick / Werte auslesen und festlegen

Kein Tipp kommt in die Tipp-Datenbank, ohne das ich Ihn vorher nicht
noch mal ganz speziell in der dann vorgestellten Version getestet habe.
(und trotzdem passieren immer mal Fehler :-)

Das ich bei diesem Tipp eine Ausnahme mache, liegt daran, das Spieleprogrammierung nicht mein Ding ist, ich aber sehr wohl weiß, daß gerade dieser Teil viele interessiert.

Zu speziell der hier vorstellten Problematik erhalte ich immer wieder Anfragen, um so schöner, daß wir nun allen etwas anbieten können, die danach gesucht haben.

Zu verdanken haben wir das Carsten Klein, dessen Tipp Zusendung ich hier unkommentiert
wiedergeben möchte. Wer Fragen oder Danksagungen los werden möchte, der kann Carsten ja mailen. DANKE CARSTEN !
##############################################################
VB TIP von Carsten Klein - *** Joystick abfragen ***

Nur eine API Funktion muß deklariert werden:

Modul1
--------

Declare Function joyGetPosEx Lib "winmm.dll" (ByVal uJoyID As Long, pji As JOYINFOEX) As Long

Die folgende Struktur dient der Kommunikation

Type JOYINFOEX
dwSize As Long ' size of structure
dwFlags As Long ' flags to indicate what to return
dwXpos As Long ' x position
dwYpos As Long ' y position
dwZpos As Long ' z position
dwRpos As Long ' rudder/4th axis position
dwUpos As Long ' 5th axis position
dwVpos As Long ' 6th axis position
dwButtons As Long ' button states
dwButtonNumber As Long ' current button number pressed
dwPOV As Long ' point of view state
dwReserved1 As Long ' reserved for communication between winmm driver
dwReserved2 As Long ' reserved for future expansion
End Type

Public JoyPos As JOYINFOEX ' Instanz der Struktur
Public Const SizeOfStruct = 52 ' Größe der Struktur ( 13*4 Bytes )

Timer1
------

JoyPos.dwSize = SizeOfStruct
JoyPos.dwFlags = ?

...gibt an, welchen Wert man zurückhaben will, nämlich eines der folgenden...:

Public Const JOY_RETURNX = &H1&
Public Const JOY_RETURNY = &H2&
Public Const JOY_RETURNZ = &H4&
Public Const JOY_RETURNR = &H8& ' axis 4
Public Const JOY_RETURNU = &H10 ' axis 5
Public Const JOY_RETURNV = &H20 ' axis 6
Public Const JOY_RETURNBUTTONS = &H80&
Public Const JOY_RETURNRAWDATA = &H100&
Public Const JOY_RETURNPOVCTS = &H200&
Public Const JOY_RETURNCENTERED = &H400&

bzw. OR-Verknüpfungen aus obigen Konstanten ( liefert dann alle Werte
der OR-Verknüpfung ). es gibt zwar noch andere Flags, deren Sinn mir allerdings verschlossen blieb... Schau doch mal in Win32Api.TXT nach...

Dann folgt der Aufruf der API-Funktion:

JoystickNummer = 0 ( 0 = 1. Joystick; 1 = 2. Joystick )
dummy = joyGetPosEx(JoystickNummer, JoyPos)

dummy ist Rückgabewert, sollte bei fehlerfreier Ausführung 0 sein.
Die Ergebnisse stehen in:

JoyPos.dwXpos ( X-Wert )
JoyPos.dwYpos ( Y-Wert )
[...] usw.

Das war's schon... Viel Spaß / Gruß Carsten :-)

##############################################################
Außerdem möchte ich noch auf eine Freeware OCX verweißen, die unter VB-Know / OCX zu finden ist und die sich der gleichen Problematik annimmt. - joy.ocx von BlackThorne


Tipp-Download

Quelle : Carsten Klein / caklit00@fht-esslingen.de

Zurück zur Übersichtsseite