M
Hmm, sorry erstmal für die späte antwort.
Ich hab das ganze aus irgend einem Manual. Ging dort um spieleprogrammierung, DirectX und Eingabegeräte.
Das ganze ist für nen Gamepad!
Grundsätzlich mal nen paar variablen:
MMRESULT ErrorResult;
UINT JoysticID;
JOYINFOEX MyJoystick;
So und Form1->OnCreate: /* Es ist bei mir immer nur 1 und genau 1 Stick dran */
JoysticID = JOYSTICKID1;
MyJoystick.dwSize = sizeof(JOYINFOEX);
MyJoystick.dwFlags = JOY_RETURNALL;
Ich polle das gute Stück alle 40ms:
ErrorResult = joyGetPosEx(JoysticID, &MyJoystick);
if (ErrorResult == JOYERR_NOERROR)
{
}
In "MyJoystick" sind nun die entsprechenden Daten.
Die Structur dahinter:
typedef struct joyinfoex_tag {
DWORD dwSize;
DWORD dwFlags;
DWORD dwXpos;
DWORD dwYpos;
DWORD dwZpos;
DWORD dwRpos;
DWORD dwUpos;
DWORD dwVpos;
DWORD dwButtons;
DWORD dwButtonNumber;
DWORD dwPOV;
DWORD dwReserved1;
DWORD dwReserved2;
} JOYINFOEX;
Nun, dies muss nurnoch entsprechend ausgewerted werden.
Als Beispiel mal das Pad (Point of view), ist recht simpel auszuwerten:
switch (MyJoystick.dwPOV)
{
case 0: ...;break;
case 4500: ...;break;
case 9000: ...;break;
...
}
Der Rest ist keineswegs schwerer!
Als Tip: Mach deine App. so, das du auf Rohdaten umschalten kannst. Das hat gerade für das Debuggen und zum festlegen von Schwellwerten gut geholfen.
Ich hoffe, das war nun hilfreich. Wie gesagt, das ganze ist nicht schwer...
Micky