Platform SDK: DirectX |
DIDATAFORMAT 構造体は、デバイスのデータ形式を記述する情報を格納する。この構造体は、IDirectInputDevice7::SetDataFormat メソッドで使用する。
typedef struct DIDATAFORMAT { DWORD dwSize; DWORD dwObjSize; DWORD dwFlags; DWORD dwDataSize; DWORD dwNumObjs; LPDIOBJECTDATAFORMAT rgodf; } DIDATAFORMAT, *LPDIDATAFORMAT; typedef const DIDATAFORMAT *LPCDIDATAFORMAT;
アプリケーションは、通常、DIDATAFORMAT 構造体を作成する必要はない。アプリケーションは、事前定義されたグローバル データ形式変数の c_dfDIMouse、c_dfDIMouse2、c_dfDIKeyboard、c_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 以降が必要。Windows 95 用に再配布可能な形で使用可能。
ヘッダー : dinput.h で宣言。