Platform SDK: DirectX |
ジョイスティックの現在の状態を取得するには、DIJOYSTATE 構造体または DIJOYSTATE2 構造体へのポインタを指定して IDirectInputDevice7::GetDeviceState メソッドを呼び出す。どちらの構造体を使用するかは、c_dfDIJoystick か c_dfDIJoystick2 のどちらでデータ形式が設定されたのかによる (「デバイス データ形式」を参照すること)。構造体に返されるジョイスティックの状態には、軸座標、ボタンの状態、および視点コントローラの状態などがある。
DIJOYSTATE 構造体の最初の 7 つのメンバが軸座標を保持する。このうち最後のメンバ rglSlider は 2 つの値の配列である (「ジョイスティック軸データの解釈」を参照すること)。
rgdwPOV メンバには、4 つまでの視点コントローラの位置が含まれている。これらは、北から時計回り (または前方) の実角度の 100 倍で表される。中心位置は -1 として報告される。5 つの位置しか持たないコントローラでは、dwPOV は以下のいずれか 1 つの値を取る。
中心位置として、-1 ではなく 65,535 を報告するドライバもある。POV 標識が中心位置にあるかどうかは、次のようにチェックしなければならない。
BOOL POVCentered = (LOWORD(dwPOV) == 0xFFFF);
rgbButtons メンバは、バイト配列である。データ形式によって、32 個または 128 個の各ボタンに 1 要素が対応する。各ボタンの上位ビットは、ボタンがダウン状態で設定され、アップ状態または存在しない場合に消去される。
DIJOYSTATE2 構造体には、軸の速度、加速度、フォース、およびトルクについての情報を提供する追加メンバがある。
ジョイスティックの現在の状態を取得するには、DirectInputDevice.GetDeviceStateJoystick メソッドまたは DirectInputDevice.GetDeviceStateJoystick2 メソッドを呼び出す。どちらのメソッドを使用するかは、DIFORMAT_JOYSTICK か DIFORMAT_JOYSTICK2 のどちらでデータ形式が設定されたのかによる (「デバイス データ形式.」を参照すること)。state パラメータに返されるジョイスティック状態には、軸座標、ボタンの状態、および視点コントローラの状態などがある。
DIJOYSTATE 型または DIJOYSTATE2 型の POV メンバには、4 つまでの視点コントローラの位置が含まれている。これらは、北から時計回り (または前方) の実角度の 100 倍で表される。中心位置は -1 として報告される。5 つの位置しか持たないコントローラの場合、POV は以下のどれか 1 つの値を取る。
中心位置として、-1 ではなく 65,535 を報告するドライバもある。POV 標識が中心位置にあるかどうかは、次のようにチェックしなければならない。
Dim POVCentered As Boolean POVCentered = (dwPOV And &HFFFF) = &HFFFF;
buttons メンバは、バイト配列である。データ型によって、32 個または 128 個の各ボタンに 1 要素が対応する。各ボタンの上位ビットは、ボタンがダウン状態で設定され、アップ状態または存在しない場合に消去される。
DIJOYSTATE2 型には、軸の速度、加速度、フォース、およびトルクについての情報を提供する追加メンバがある。
詳細については、「ジョイスティック軸データの解釈」を参照すること。