Использование joyGetPosEx не удается при переключении джойстика через порт USB - PullRequest
2 голосов
/ 25 июня 2011

Я использую функцию «joyGetPosEx» для обнаружения входов джойстика:

JOYINFOEX joyInfoEx;
ZeroMemory(&joyInfoEx, sizeof(joyInfoEx));
joyInfoEx.dwSize = sizeof(joyInfoEx);
// poll for values
joyGetPosEx(JOYSTICKID1, &joyInfoEx);

Когда джойстик подключен, все работает нормально, и функция возвращает «JOYERR_NOERROR».

Однако, если во время работы программы я отсоединяю джойстик и подключаю его к другому USB-порту, "joyGetPosEx (JOYSTICKID1, & joyInfoEx);" продолжает возвращать значение "JOYERR_UNPLUGGED".

Если я снова подключу устройство к начальному USB-порту, оно снова заработает.

Кто-нибудь знает, как заставить работать джойстик, даже если он подключен к новому порту?

Заранее спасибо!

1 Ответ

0 голосов
/ 25 июня 2011

Я бы сказал, что у вас есть USB-устройство без серийного номера, поэтому Windows определяет его по месту подключения. Может ли оно работать как JOYSTICKID2 случайно?


В конце концов мы обнаружили, что функция joyConfigChanged может повторно подключить джойстик. [MSDN говорит, что для использования этой функции необходимо #include <dinput.h>, так как оказывается, важен порядок включений: сначала mmsystem.h, затем dinput.h.

...