Microsoft DirectX 8.0 (Visual Basic) |
ジョイスティックからバッファリング データを取得するには、まず、バッファサイズを設定し (「デバイス プロパティ」を参照すること)、DIDEVICEOBJECTDATA 型の配列を宣言しなければならない。この配列は、最高でバッファ サイズと同数の要素を持つことができる。1 度の呼び出しでバッファの内容全体を取得する必要はない。配列内の 1 要素だけを保持して、バッファが空になるまで 1 つずつイベントを取得することができる。
デバイスの取得後は、DirectInputDevice8.GetDeviceData メソッドを使っていつでもバッファを調べたりフラッシュしたりすることができる (「バッファリング データと直接データ」を参照すること)。
DIDEVICEOBJECTDATA 配列中の各要素は、ジョイスティックに対する単一オブジェクトの状態の変化を表す。たとえば、ユーザーがボタン 0 を押してスティックを斜めに移動すると、GetDeviceData に渡された配列 (3 つ以上の要素を持っている場合) は、3 つの要素が埋められる。これらの要素はそれぞれ、ボタン 0 の押下、x 軸の変化、および y 軸の変化を表す。メソッドの戻り値は 3 である。
配列中の要素がどのオブジェクトを指すかは、DIDEVICEOBJECTDATA 型の lOfs メンバを、CONST_DIJOYSTICKOFS 列挙内の定数と比較することで確認できる。これらのそれぞれの値は、DIJOYSTATE 型中のオブジェクトに対するデータのオフセットと等しい。たとえば、DIJOFS_BUTTON0 が返す値は、DIJOYSTATE 型中の buttons(0) オフセットと等しい。
データ形式が DIFORMAT_JOYSTICK2 で設定された場合は、DIJOYSTATE 内に存在するすべてのデバイス オブジェクトのオフセット定数を使用することができる。ただし、DIJOYSTATE2 の追加メンバに表現されるデバイス オブジェクトには、独自のオフセットを設定する必要がある。この型の内部構造は、Dinput.h ヘッダー ファイルに含まれる同名の C++ 構造体と同じである。
デバイス オブジェクトの状態変化データは、DIDEVICEOBJECTDATA 型の lData メンバに格納される。軸の場合には、座標値がこのメンバ中に返される。ボタン オブジェクトの場合は、lData の下位バイトだけが有意である。上位ビットはボタンが押されたときに設定され、ボタンが離されたときに消去される。
ほかのメンバについては、「タイム スタンプとシーケンス番号」を参照すること。