Microsoft DirectX 8.0 (C++)

DIDATAFORMAT

デバイスのデータ形式を表す。この構造体は、IDirectInputDevice8::SetDataFormat メソッドで使用する。

typedef struct DIDATAFORMAT { 
    DWORD dwSize; 
    DWORD dwObjSize; 
    DWORD dwFlags; 
    DWORD dwDataSize; 
    DWORD dwNumObjs; 
    LPDIOBJECTDATAFORMAT rgodf; 
} DIDATAFORMAT, *LPDIDATAFORMAT;
 
typedef const DIDATAFORMAT *LPCDIDATAFORMAT;

メンバ

dwSize
この構造体のバイト単位のサイズ。
dwObjSize
DIOBJECTDATAFORMAT 構造体のバイト単位のサイズ。
dwFlags
データ形式のほかの属性を表すフラグ。この値は、次のいずれか 1 つである。
DIDF_ABSAXIS
軸は絶対モードにある。データ形式にこのフラグを設定することは、IDirectInputDevice8::SetProperty メソッドを使用して軸モード プロパティを手動で設定することに等しい。この値は、DIDF_RELAXIS フラグと組み合わせることはできない。
DIDF_RELAXIS
軸は相対モードにある。データ形式にこのフラグを設定することは、IDirectInputDevice8::SetProperty メソッドを使用して軸モード プロパティを手動で設定することに等しい。この値は、DIDF_ABSAXIS フラグと組み合わせることはできない。
dwDataSize
デバイスが返すデータ パケットのバイト単位のサイズ。この値は、4 の倍数、かつデータ パケット内のオブジェクト データの最大オフセット値より大きくなければならない。
dwNumObjs
rgodf 配列中のオブジェクト数。
rgodf
DIOBJECTDATAFORMAT 構造体の配列のアドレス。各構造体は、1 つのオブジェクト データがデバイス データの中でどのように報告されるのかを記述する。典型的なエラーとしては、2 種類の情報を同じ位置に格納したり、1 種類の情報を複数の位置に格納したりするものがある。

注意

アプリケーションは、通常、DIDATAFORMAT 構造体を作成する必要はない。アプリケーションは、事前定義されたグローバル データ形式変数の c_dfDIMousec_dfDIMouse2c_dfDIKeyboardc_dfDIJoystick、c_dfDIJoystick2 のいずれかを使用できるからである。

以下の例では、2 つの軸 (絶対座標で報告される) と 2 つのボタンを必要とするアプリケーションが使用できるデータ形式を設定している。

// アプリケーションが次の構造体を使って、
// デバイス データを読み取ると仮定する。 
 
typedef struct MYDATA { 
    LONG  lX;                   // x 軸がここにくる。 
    LONG  lY;                   // y 軸がここにくる。 
    BYTE  bButtonA;             // 1 つのボタンがここにくる。 
    BYTE  bButtonB;             // 別のボタンがここにくる。 
    BYTE  bPadding[2];          // サイズは、DWORD の倍数でなければならない。 
} MYDATA; 
 
// 次のデータ形式を使用できる。 
 
DIOBJECTDATAFORMAT rgodf[ ] = { 
  { &GUID_XAxis, FIELD_OFFSET(MYDATA, lX),
    DIDFT_AXIS | DIDFT_ANYINSTANCE, 0, }, 
  { &GUID_YAxis, FIELD_OFFSET(MYDATA, lY), 
    DIDFT_AXIS | DIDFT_ANYINSTANCE, 0, }, 
  { &GUID_Button, FIELD_OFFSET(MYDATA, bButtonA),
    DIDFT_BUTTON | DIDFT_ANYINSTANCE, 0, }, 
  { &GUID_Button, FIELD_OFFSET(MYDATA, bButtonB), 
    DIDFT_BUTTON | DIDFT_ANYINSTANCE, 0, }, 
}; 
#define numObjects (sizeof(rgodf) / sizeof(rgodf[0])) 
 
DIDATAFORMAT df = { 
    sizeof(DIDATAFORMAT),       // この構造体のサイズ
    sizeof(DIOBJECTDATAFORMAT), // オブジェクト データ形式のサイズ
    DIDF_ABSAXIS,               // 絶対軸の座標
    sizeof(MYDATA),             // デバイス データのサイズ
    numObjects,                 // オブジェクト数
    rgodf,                      // その位置
}; 

動作環境

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

参照

DIACTIONFORMAT