Platform SDK: DirectX

消失したジョイスティック入力の確認

ジョイスティックをフォアグラウンドモードで使用する (「協調レベル」を参照すること) 場合には、フォーカスが他のアプリケーションに切り替わるときに、デバイスを喪失することがある。

[C++]

IDirectInputDevice7::GetDeviceData メソッドまたは IDirectInputDevice7::GetDeviceState メソッドからの DIERR_INPUTLOST 戻り値をチェックし、必要に応じてジョイスティックを再取得することができる (「デバイスの取得」を参照すること)。

 :  DIERR_NOTACQUIRED エラーを受け取った場合には、ジョイスティックの再取得を試みないようにする必要がある。そうしないと、無限ループに入るおそれがある。取得は失敗し、DIERR_NOTACQUIRED エラーを受け取るという繰り返しが永遠に続く。

キーボードやマウスとは異なり、Windows システムはジョイスティックを使用しないので、アプリケーションがバックグラウンドに移行する場合を除き、ジョイスティックへのアクセス権が失われることはない。したがって、どちらのメソッドでも、WM_ACTIVATE メッセージに応えてデバイスを再取得できる。

[Visual Basic]

DirectInputDevice.GetDeviceData メソッドまたは DirectInputDevice.GetDeviceState メソッドからの DIERR_INPUTLOST 戻り値をチェックし、必要に応じてジョイスティックを再取得することができる (「デバイスの取得」を参照すること)。

 :  DIERR_NOTACQUIRED エラーを受け取った場合には、ジョイスティックの再取得を試みないようにする必要がある。そうしないと、無限ループに入るおそれがある。取得は失敗し、DIERR_NOTACQUIRED エラーを受け取るという繰り返しが永遠に続く。