次の方法で共有


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_dfDIMousec_dfDIMouse2c_dfDIKeyboardc_dfDIJoystickc_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