Manejo del Joystick en Visual Basic

 

Función joyGetDevCaps
Declare Function joyGetDevCaps Lib "winmm.dll" Alias "joyGetDevCapsA" (ByVal id As Long, ByVal lpCaps As JOYCAPS, ByVal uSize As Long) As Long
JoyGetDevCaps lee diversa información sobre el joystick. La información que recibe la pone en la variable lpCaps. Sin embargo no da la posición del joystick. Si el valor de esta función es 0 es que el joystick esta conectado. Cualquier otro resultado indica que no hay instalado un joystick.

Parámetros.
id - El nº del joystick para comenzar a leer, empezando desde el 0
lpCaps - Variable que recibe la información del joystick.
uSize -Longitud en bytes de lpCaps

Ejemplo:

' Chequeo para ver sí el joystick esta funcionado.
Dim cap As JOYCAPS
x = joyGetDevCaps(0, cap, Len(cap))
If x = 0 Then Debug.Print "Joystick #1 encontrado"

 

Función GetNumDevs
Declare Function joyGetNumDevs Lib "winmm.dll" () As Long
Esta función retorna el nº de joysticks que están configurados en el panel de control. Esto no significa que todos ellos estén conectados. Es preferible utilzar la anterior opción.

Ejemplo:

'Cuantos josticks tienes configurados
x = joyGetNumDevs()
Debug.Print "Tienes configurados "; x; "joysticks."

 

joyGetPos Function
Declare Function joyGetPos Lib "winmm.dll" (ByVal uJoyID As Long, pji As JOYINFO) As Long
Esta función retorna las coordenadas del joystick así como su status. Esta información se pasa a la variable pji. La función retorna 0 si el joystick esta configurado, sino devuelve otro valor.

Parámetros.
uJoyID - El nº del joystick en el que se esta trabajando.
pji - Variable donde se encuentran el status y las coordenas del joystick.

Ejemplo

Dim pos As JOYINFO
x = joyGetPos(0, pos)
Debug.Print "Coordinates:" pos.wXpos; pos.wYpos

 


A continuación te paso los registros para que veas todas sus variables.
JOYINFO Type

Type JOYINFO
   wXpos As Long
   wYpos As Long
   wZpos As Long
   wButtons As Long
End Type

Este registro retorna las posiciones X,Y,Z y los botones pulsados del joystick.

wXpos - Coordenada X
wYpos - Coordenada Y
wZpos - Cordenada Z
wButtons - Valor devuelto si se ha pulsado un boton, 1 para el boton #1, 2 para el botón #2, etc.

 

JOYCAPS Type

Type JOYCAPS
   wMid As Integer
   wPid As Integer
   szPname As String * 32
   wXmin As Long
   wXmax As Long
   wYmin As Long
   wYmax As Long
   wZmin As Long
   wZmax As Long
   wNumButtons As Long
   wPeriodMin As Long
   wPeriodMax As Long
End Type

Este registro devuelve información sobre el joystick, NO devuelve las coordenadas. Normalmente, según adaptadores retorna valores del joystick (rangos) y número de botones.

WMid - ?
WPid - ?
szPname - Nombre del driver del joystick
wXmin - Coordenada X mínima.
wXmax - Coordenada X máxima.
wYmin - Coordenada Y mínima.
wYmax - Coordenada Y máxima.
wZmin - Coordenada Z mínima.
wZmax - Coordenada Z máxima.
wNumButtons - Nº de botones del joystick.
wPeriodMin - ?
wPeriodMax - ?

 

Pulsa aquí para bajarte el codigo fuente de un ejemplo.

 


Cristóbal Tello [email protected] -Tarragona-