DIOBJECTDATAFORMAT 構造体
DIOBJECTDATAFORMAT 構造体
IDirectInputDevice8::SetDataFormat メソッドで使うためのデバイス オブジェクトのデータ形式を表す。
構文
typedef struct DIOBJECTDATAFORMAT {
const GUID * pguid;
DWORD dwOfs;
DWORD dwType;
DWORD dwFlags;
} DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT;
typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT;
メンバ
- pguid
軸、ボタン、またはその他の入力ソースに対する一意の識別子。データ形式の要求時にこのメンバを NULL にすると、任意のタイプのオブジェクトを許可することを示す。 - dwOfs
入力ソースのデータを格納するデータ パケット内のオフセット。この値は、軸など、DWORD サイズのデータに合うように、4 の倍数でなければならない。ボタンの場合は、バイト整列でもよい。 - dwType
オブジェクトを記述するデバイス タイプ。オブジェクトの種類 (軸、ボタンなど) を表す以下のフラグの組み合わせであり、中央の 16 ビットは、オブジェクト インスタンス番号を格納する。データ形式の要求時に、インスタンス部分に DIDFT_ANYINSTANCE を設定すると、任意のインスタンスを許可できる。また、DIDFT_MAKEINSTANCE(n) に設定すると、要求をインスタンス n に限定できる。「注意」の例を参照すること。DIDFT_ABSAXIS
IDirectInputDevice8::SetDataFormat メソッドで選択したオブジェクトは、絶対軸でなければならない。DIDFT_AXIS
IDirectInputDevice8::SetDataFormat メソッドで選択したオブジェクトは、絶対軸または相対軸でなければならない。DIDFT_BUTTON
IDirectInputDevice8::SetDataFormat メソッドで選択したオブジェクトは、プッシュ ボタンまたはトグル ボタンでなければならない。DIDFT_FFACTUATOR
IDirectInputDevice8::SetDataFormat メソッドで選択したオブジェクトは、フォース フィードバック アクチュエータを含まなければならない。つまり、フォースをこのオブジェクトに適用できる必要がある。DIDFT_FFEFFECTTRIGGER
IDirectInputDevice8::SetDataFormat メソッドで選択したオブジェクトは、有効なフォース フィードバック エフェクト トリガでなければならない。DIDFT_POV
IDirectInputDevice8::SetDataFormat メソッドで選択したオブジェクトは、視点コントローラでなければならない。DIDFT_PSHBUTTON
IDirectInputDevice8::SetDataFormat メソッドで選択したオブジェクトは、プッシュ ボタンでなければならない。DIDFT_RELAXIS
IDirectInputDevice8::SetDataFormat によって選択されたオブジェクトは、相対軸でなければならない。DIDFT_TGLBUTTON
IDirectInputDevice8::SetDataFormat によって選択されたオブジェクトは、トグル ボタンでなければならない。DIDFT_VENDORDEFINED
IDirectInputDevice8::SetDataFormat によって選択されたオブジェクトは、メーカー定義のタイプでなければならない。
- dwFlags
ゼロまたは次のいずれかの値を指定する。DIDOI_ASPECTACCEL
IDirectInputDevice8::SetDataFormat で選択したオブジェクトは、加速度情報を報告しなければならない。DIDOI_ASPECTFORCE
IDirectInputDevice8::SetDataFormat で選択したオブジェクトは、フォース情報を報告しなければならない。DIDOI_ASPECTPOSITION
IDirectInputDevice8::SetDataFormat で選択したオブジェクトは、位置情報を報告しなければならない。DIDOI_ASPECTVELOCITY
IDirectInputDevice8::SetDataFormat で選択したオブジェクトは、速度情報を報告しなければならない。
注意
データ形式は、各オブジェクト (軸、ボタンなど) が 1 つずつ保有する複数の DIOBJECTDATAFORMAT 構造体から成る。これらの構造体の配列は、IDirectInputDevice8::SetDataFormat に渡される DIDATAFORMAT 構造体に格納される。アプリケーションは、通常、DIOBJECTDATAFORMAT 構造体から成る配列を作成する必要はなく、DIOBJECTDATAFORMAT に事前定義されている設定値である c_dfDIMouse、c_dfDIMouse2、c_dfDIKeyboard、c_dfDIJoystick、c_dfDIJoystick2 などのデータ形式データのいずれかを使える。
次のオブジェクト データ形式は、Microsoft® DirectInput® が最初の使用可能な軸を選択し、そのデバイス データのオフセット 4 の位置にある値を DWORD で報告しなければならないことを指定している。
DIOBJECTDATAFORMAT dfAnyAxis = {
0, // Wildcard
4, // Offset
DIDFT_AXIS | DIDFT_ANYINSTANCE, // Any axis is okay.
0, // Ignore aspect
};
次のオブジェクト データ形式は、デバイスの x 軸をデバイス データのオフセット 12 の位置に DWORD で格納するように指定している。デバイスが複数の x 軸を持っている場合は、最初に使用可能な軸が選択される。
DIOBJECTDATAFORMAT dfAnyXAxis = {
&GUID_XAxis, // Must be an X axis
12, // Offset
DIDFT_AXIS | DIDFT_ANYINSTANCE, // Any X axis is okay.
0, // Ignore aspect
};
次のオブジェクト データ形式は、DirectInput が最初に使用可能なボタンを選択して、デバイス データのオフセット 16 の位置にあるバイトの上位ビットの値を報告するように指定している。
DIOBJECTDATAFORMAT dfAnyButton = {
0, // Wildcard
16, // Offset
DIDFT_BUTTON | DIDFT_ANYINSTANCE, // Any button is okay.
0, // Ignore aspect
};
次のオブジェクト データ形式は、デバイスのボタン 0 をデバイス データのオフセット 18 の位置に格納されているバイトの上位ビットとして報告するように指定している。
デバイスにボタン 0 がない場合、このデータ形式の設定は失敗する。
DIOBJECTDATAFORMAT dfButton0 = {
0, // Wildcard
18, // Offset
DIDFT_BUTTON | DIDFT_MAKEINSTANCE(0), // Button zero
0, // Ignore aspect
};
構造体の情報
ヘッダー | dinput.h |
最低限のオペレーティング システム | Windows 98 |