Microsoft DirectX 8.0 (C++)

DIJOYSTATE

ジョイスティック デバイスの状態を表す。この構造体は、IDirectInputDevice8::GetDeviceState メソッドで使用する。

typedef struct DIJOYSTATE { 
    LONG    lX; 
    LONG    lY; 
    LONG    lZ; 
    LONG    lRx; 
    LONG    lRy; 
    LONG    lRz; 
    LONG    rglSlider[2];
    DWORD   rgdwPOV[4];
    BYTE    rgbButtons[32];
} DIJOYSTATE, *LPDIJOYSTATE; 

メンバ

lX
通常はスティックの左右の動きを表す x 軸。
lY
通常はスティックの前後の動きを表す y 軸。
lZ
スロットル制御を表す場合がある z 軸。ジョイスティックにこの軸がなければ、値はゼロである。
lRx
x 軸回転。ジョイスティックにこの軸がなければ、値はゼロである。
lRy
y 軸回転。ジョイスティックにこの軸がなければ、値はゼロである。
lRz
z 軸回転 (方向舵と呼ばれる)。ジョイスティックにこの軸がなければ、値はゼロである。
rglSlider[2]
2 つの追加軸 (以前には u 軸と v 軸と呼ばれていた)。この値の意味はジョイスティックで異なる。これらの値の意味についての情報を取得するには、IDirectInputDevice8::GetObjectInfo メソッドを使用する。
rgdwPOV[4]
視点ハットなどの方向コントローラ。この位置は、北から (ユーザーの正面側) 時計回りの実角度の 100 倍で表される。中心位置は通常 -1 と報告されるが、これについては「注意」を参照すること。5 つの位置しか持たないインジケータの場合、コントローラの値は -1、0、9,000、18,000、27,000 のどれか 1 つの値を取る。
rgbButtons[32]
ボタンの配列。バイトの高次ビットは、対応するボタンがダウン状態にあるときに設定され、ボタンがアップ状態または存在しないときには消去される。

注意

ジョイスティック型のアクセスができるようにデバイスを準備するには、IDirectInputDevice8::SetDataFormat メソッドを呼び出し、c_dfDIJoystick グローバル データ形式変数を渡す。

軸が相対モードである場合は、適切なメンバが位置の変化量を格納する。絶対モードの場合には、同じメンバが軸の絶対位置を格納する。

POV インジケータの中心位置を 65,535 と報告するドライバもある。POV インジケータが中心位置にあるかどうかは、次のようにして確認する。

BOOL POVCentered = (LOWORD(dwPOV) == 0xFFFF);

 :  Microsoft® DirectX® 7 では、一部のジョイスティックのスライダを Z 軸に割り当て、それ以降のコードでそのメンバからデータを取得することができた。DirectX 8 では、同じスライダを rglSlider 配列に割り当てる。アプリケーションを DirectX 8 に移植する場合は、この点を考慮する必要がある。rglSlider 配列からスライダ データを取得するために必要な変更があれば行うこと。

動作環境

  Windows NT/2000 : Windows 2000 以降に対する再配布可能ファイルとして提供。
  Windows 95/98 : Windows 95 以降に対する再配布可能ファイルとして提供。
  ヘッダー : dinput.h で宣言。

参照

DIJOYSTATE2