DIJOYSTATE2
拡張機能を持つジョイスティック デバイスの状態を記述します。この構造体は、IDirectInputDevice8::GetDeviceState メソッドで使用されます。
typedef struct DIJOYSTATE2 {
LONG lX;
LONG lY;
LONG lZ;
LONG lRx;
LONG lRy;
LONG lRz;
LONG rglSlider[2];
DWORD rgdwPOV[4];
BYTE rgbButtons[128];
LONG lVX;
LONG lVY;
LONG lVZ;
LONG lVRx;
LONG lVRy;
LONG lVRz;
LONG rglVSlider[2];
LONG lAX;
LONG lAY;
LONG lAZ;
LONG lARx;
LONG lARy;
LONG lARz;
LONG rglASlider[2];
LONG lFX;
LONG lFY;
LONG lFZ;
LONG lFRx;
LONG lFRy;
LONG lFRz;
LONG rglFSlider[2];
} DIJOYSTATE2, *LPDIJOYSTATE2;
メンバ
- lX
通常はスティックの左右の動きを表す X 軸です。 - lY
通常はスティックの前後の動きを表す Y 軸です。 - lZ
多くの場合、スロットル コントロールを表す Z 軸です。ジョイスティックにこの軸がない場合、値は 0 です。 - lRx
X 軸回転です。ジョイスティックにこの軸がない場合、値は 0 です。 - lRy
Y 軸回転です。ジョイスティックにこの軸がない場合、値は 0 です。 - lRz
Z 軸回転です (多くの場合、ラダーと呼ばれます)。ジョイスティックにこの軸がない場合、値は 0 です。 - rglSlider
2 つの追加軸の値 (以前は u 軸および v 軸と呼ばれていました) です。この値のセマンティクスはジョイスティックによって異なります。これらの値のセマンティクス情報を取得するには、IDirectInputDevice8::GetObjectInfo メソッドを使用します。 - rgdwPOV
視点ハットなどの方向コントローラーです。この位置は、北 (ユーザーの正面側) から時計回りの角度の 100 倍で示されます。通常、中心位置は - 1 と報告されますが、これについては「解説」を参照してください。5 つの位置しかないインジケーターの場合、コントローラーの値は 1、0、9,000、18,000、または 27,000 です。 - rgbButtons
ボタンの配列です。バイトの上位ビットは、対応するボタンがダウン状態にあるときに設定され、ボタンがアップ状態かボタンが存在しないときには消去されます。 - lVX
X 軸の速度です。 - lVY
Y 軸の速度です。 - lVZ
Z 軸の速度です。 - lVRx
X 軸の角速度です。 - lVRy
Y 軸の角速度です。 - lVRz
Z 軸の角速度です。 - rglVSlider
追加軸の速度です。 - lAX
X 軸の加速度です。 - lAY
Y 軸の加速度です。 - lAZ
Z 軸の加速度です。 - lARx
X 軸の角加速度です。 - lARy
Y 軸の角加速度です。 - lARz
Z 軸の角加速度です。 - rglASlider
追加軸の加速度です。 - lFX
X 軸のフォースです。 - lFY
Y 軸のフォースです。 - lFZ
Z 軸のフォースです。 - lFRx
X 軸のトルクです。 - lFRy
Y 軸のトルクです。 - lFRz
Z 軸のトルクです。 - rglFSlider
追加軸のフォースです。
解説
拡張機能を持つジョイスティックへのアクセスに対応するようにデバイスを準備するには、IDirectInputDevice8::SetDataFormat メソッドを呼び出し、 c_dfDIJoystick2 グローバル データ フォーマット変数を渡します。
軸が相対モードであれば、適切なメンバーに位置の変化が格納されます。絶対モードであれば、メンバーに絶対軸位置が格納されます。
ドライバーの中には、POV インジケーターの中心位置を 65,535 と報告するものもあります。インジケーターが中心位置にあるかどうかは、次のようにして確認することができます。
BOOL POVCentered = (LOWORD(dwPOV) == 0xFFFF);
注 DirectX 7.0 では、一部のジョイスティックのスライダーを Z 軸に割り当てて、それ以降のコードでそのメンバーからデータを取得することができました。DirectX 8.0 以降では、同じスライダーを rglSlider 配列に割り当てます。DirectX の新しいバージョンにアプリケーションを移植するときには、この点を考慮する必要があります。rglSlider 配列からスライダー データを取得するには、必要に応じて変更を加えてください。