Microsoft DirectX 8.0 (C++)

DIDEVICEOBJECTDATA

バッファリング デバイスの情報を格納する。この構造体は、IDirectInputDevice8::GetDeviceData および IDirectInputDevice8::SendDeviceData メソッドで使用される。

typedef struct DIDEVICEOBJECTDATA { 
    DWORD    dwOfs; 
    DWORD    dwData; 
    DWORD    dwTimeStamp; 
    DWORD    dwSequence; 
    UINT_PTR uAppData;
} DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA; 
 
typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA;

メンバ

dwOfs
GetDeviceData の場合、データの報告対象となっているオブジェクトの、現在のデータ形式に対するオフセット値。すなわち、IDirectInputDevice8::GetDeviceState メソッドの呼び出しによってデータが取得された場合、その dwData が格納されている位置となる。デバイスがマウス、キーボード、またはジョイスティックとしてアクセスされる場合に、この dwOfs メンバは、マウス デバイス定数キーボード デバイス定数、またはジョイスティック デバイス定数のいずれかになる。カスタム データ形式が設定されている場合は、カスタム データ形式に関連するオフセットになる。

アクション マッピングが使用中であれば、このメンバを無視できる。その代わりに、uAppData からアクション値を取得する。

SendDeviceData の場合、データの送信先であるオブジェクトのインスタンス ID。これは DIDEVICEOBJECTINSTANCE 構造体の dwType メンバから取得される。

dwData
デバイスから取得、またはデバイスに送信されるデータ。

軸からの入力の場合、デバイスが相対軸モードにあれば、相対軸の動きが報告される。デバイスが絶対軸モードにあれば、絶対座標が報告される。

ボタンからの入力の場合、dwData の下位バイトだけが有意である。下位バイトの上位ビットは、ボタンが押されたときに設定され、離されたときに消去される。

dwTimeStamp
入力イベントが生成されたミリ秒単位のシステム時間。なお、この値は、約 50 日で循環する。「注意」を参照すること。

構造体が SendDeviceData メソッドと共に使用される場合、このメンバは必ずゼロになる。

dwSequence
このイベントに対する Microsoft® DirectInput® シーケンス番号。すべての入力イベントには、昇順のシーケンス番号が割り当てられている。これにより、異なるデバイスからのイベントを時間順にソートすることが可能になる。この値は、循環して初期値に戻るので、2 つのシーケンス番号を比較する場合には注意しなければならない。この比較を確実に行うには、DISEQUENCE_COMPARE マクロを使用すればよい。

構造体が SendDeviceData メソッドと共に使用される場合、このメンバは必ずゼロになる。

uAppData
前回の IDirectInputDevice8::SetActionMap の呼び出しで、このオブジェクトに割り当てられたアプリケーション定義のアクション値。これは、オブジェクトに関連付けられた DIACTION 構造体の uAppData メンバの値である。アクション マッピングを使用していない場合はこの値を無視する。

構造体が SendDeviceData メソッドと共に使用される場合、このメンバは必ずゼロになる。

注意

dwTimeStamp が返すシステム時間は、Microsoft® Win32® の GetTickCount または timeGetTime 関数が使用するのと同じクロックに由来するものであるが、より精密な値を表すと考えられる。たとえば、Microsoft® Windows® 95 の場合、GetTickCount タイマの更新間隔は 55 ミリ秒だが、dwTimeStamp の値の誤差は 1 ミリ秒以内である。このため、GetTickCount を呼び出して n という値が返され、n + n1 というタイムスタンプを持つイベントを受け取る場合、そのイベントが GetTickCount を呼び出してからちょうど n1 ミリ秒後に発生した、と仮定することはできない。

動作環境

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