04/07/19 08:58 48ZX7Scm
荒んでるとこすまんがDirectInput7で教えてくれ('A`)
今作ってるゲームを二人プレイ用に改造してるとこなんだが、2つ目以降の
Joystickデバイス取得の具合がどうもよろしくないのよ・・・
LPDIRECTINPUT7 pDI = NULL;
LPDIRECTINPUTDEVICE7 pDIdev1 = NULL;
LPDIRECTINPUTDEVICE7 pDIdev2 = NULL;
BOOL CALLBACK GetJoystickCallback(LPDIDEVICEINSTANCE lpddi,LPVOID *pvRef)
{
HRESULT hResult;
hResult = pDI->CreateDeviceEx(lpddi->guidInstance, IID_IDirectInputDevice7,(void**)pvRef, NULL);
if(hResult == DI_OK)returnDIENUM_CONTINUE;
returnDIENUM_STOP;
}
こういう列挙コールバックを書いて・・・
(省略)
hResult1 = pDI->EnumDevices(DIDEVTYPE_JOYSTICK,(LPDIENUMDEVICESCALLBACK)GetJoystickCallback,&pDIdev1,DIEDFL_ATTACHEDONLY);
hResult2 = pDI->EnumDevices(DIDEVTYPE_JOYSTICK,(LPDIENUMDEVICESCALLBACK)GetJoystickCallback,&pDIdev2,DIEDFL_ATTACHEDONLY);
こんな感じでデバイスを取得しようとすると、PCにジョイスティックが1つしか繋がってない時でも
2回目のEnumDevicesがDI_OKを返しちゃうのよね(ちゃんと失敗を返してくれない)
ちなみにPCからジョイスティックを抜いて実行するとちゃんと1つ目から取得に失敗する。
何故か1つでも繋がってると2回目のEnumDevicesまで成功してしまうという・・・
いろんなサンプル見たけど1つ目を認識させるとこ止まりで参考にならんかった
漏れのコードが間違ってるのは明白なんだが解決方法がワカラン
ジョイスティックが1つの時に2回目以降がDI_OKを返さなくする正しいやり方を教えて下され