Microsoft DirectX 8.0 (C++)

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
SetDataFormat メソッドによって選択されたオブジェクトは、絶対軸でなければならない。
DIDFT_AXIS
SetDataFormat メソッドによって選択されたオブジェクトは、絶対軸あるいは相対軸でなければならない。
DIDFT_BUTTON
SetDataFormat メソッドによって選択されたオブジェクトは、プッシュ ボタンあるいはトグル ボタンでなければならない。
DIDFT_FFACTUATOR
SetDataFormat メソッドによって選択されたオブジェクトは、フォース フィードバック アクチュエータを含まなければならない。すなわち、フォースをこのオブジェクトに適用することができなければならない。
DIDFT_FFEFFECTTRIGGER
SetDataFormat メソッドによって選択されたオブジェクトは、有効なフォース フィードバック エフェクト トリガでなければならない。
DIDFT_POV
SetDataFormat メソッドによって選択されたオブジェクトは、視点コントローラでなければならない。
DIDFT_PSHBUTTON
SetDataFormat メソッドによって選択されたオブジェクトは、プッシュ ボタンでなければならない。
DIDFT_RELAXIS
SetDataFormat によって選択されたオブジェクトは、相対軸でなければならない。
DIDFT_TGLBUTTON
SetDataFormat によって選択されたオブジェクトは、トグル ボタンでなければならない。
DIDFT_VENDORDEFINED
SetDataFormat によって選択されたオブジェクトは、メーカー定義のタイプでなければならない。
dwFlags
ゼロまたは以下の値のいずれか。
DIDOI_ASPECTACCEL
SetDataFormat によって選択されたオブジェクトは、加速度情報を報告しなければならない。
DIDOI_ASPECTFORCE
SetDataFormat によって選択されたオブジェクトは、フォース情報を報告しなければならない。
DIDOI_ASPECTPOSITION
SetDataFormat によって選択されたオブジェクトは、位置情報を報告しなければならない。
DIDOI_ASPECTVELOCITY
SetDataFormat によって選択されたオブジェクトは、速度情報を報告しなければならない。

注意

データ形式は、各オブジェクト (軸、ボタンなど) が 1 つずつ保有する複数の DIOBJECTDATAFORMAT 構造体で構成される。これらの構造体の配列は、IDirectInputDevice8::SetDataFormat に渡される DIDATAFORMAT 構造体に格納される。アプリケーションは、通常、DIOBJECTDATAFORMAT 構造体からなる配列を作成する必要はなく、DIOBJECTDATAFORMAT に事前定義されている設定値である c_dfDIMousec_dfDIMouse2c_dfDIKeyboardc_dfDIJoystick、または c_dfDIJoystick2 などの事前定義されたデータ形式データのいずれかを使用できる。

以下のオブジェクト データ形式は、Microsoft® DirectInput® が最初の使用可能な軸を選択し、そのデバイス データのオフセット 4 の位置にある値を DWORD で報告しなければならないということを指定している。

DIOBJECTDATAFORMAT dfAnyAxis = { 
    0,                              // ワイルドカード
    4,                              // オフセット
    DIDFT_AXIS | DIDFT_ANYINSTANCE, // どの軸でもよい。 
    0,                              // アスペクトを無視する。
}; 

以下のオブジェクト データ形式は、デバイスの x 軸をデバイス データのオフセット 12 の位置に DWORD で格納するように指定している。デバイスが複数の x 軸を持っている場合には、最初に使用可能な軸が選択される。

DIOBJECTDATAFORMAT dfAnyXAxis = { 
    &GUID_XAxis,                    // X 軸を指定する。
    12,                             // オフセット
    DIDFT_AXIS | DIDFT_ANYINSTANCE, // どの X 軸でもよい。 
    0,                              // アスペクトを無視する。
}; 

以下のオブジェクト データ形式は、DirectInput が最初に使用可能なボタンを選択して、デバイス データのオフセット 16 の位置にあるバイトの上位ビットの値を報告するように指定している。

DIOBJECTDATAFORMAT dfAnyButton = { 
    0,                                // ワイルドカード
    16,                               // オフセット
    DIDFT_BUTTON | DIDFT_ANYINSTANCE, // どのボタンでもよい。 
    0,                                // アスペクトを無視する。
}; 

以下のオブジェクト データ形式は、デバイスのボタン 0 をデバイス データのオフセット 18 の位置に格納されているバイトの上位ビットとして報告するように指定している。

デバイスにボタン 0 がなければ、このデータ形式の設定は失敗に終わる。

DIOBJECTDATAFORMAT dfButton0 = { 
    0,                                    // ワイルドカード
    18,                                   // オフセット
    DIDFT_BUTTON | DIDFT_MAKEINSTANCE(0), // ボタン 0
    0,                                    // アスペクトを無視する。
}; 

動作環境

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