Microsoft DirectX 8.0 (C++)

デバイス プロパティ

Microsoft® DirectInput® デバイスのプロパティには、データ バッファのサイズ、軸が返す値の範囲と細分性、軸データが相対か絶対か、およびジョイスティックの物理的位置と報告データ間の関係に影響するジョイスティック軸のデッド ゾーン飽和がある。特殊デバイスは、これ以外のプロパティを持つこともある。DirectInput によって定義されたプロパティのリストについては、「IDirectInputDevice8::GetProperty」を参照すること。

1 つの例外 (フォース フィードバック デバイスのゲイン プロパティ) を除いて、プロパティは、デバイスが解放された状態にある場合に限り変更することができる。

IDirectInputDevice8::SetProperty メソッドまたは IDirectInputDevice8::GetProperty メソッドを呼び出す前に、DIPROPHEADER 構造体とデータの 1 つ以上の要素で構成されるプロパティ構造体を設定する必要がある。入力デバイスには多くのプロパティがあるので、SetProperty はこれらのプロパティを定義するあらゆる種類の構造体に対して機能できなくてはならない。DIPROPHEADER 構造体の目的は、プロパティ構造体のサイズとデータの解釈方法を定義することである。

DirectInput は、以下の事前定義されたプロパティ構造体を含む。

SetProperty の場合、プロパティ構造体のデータ メンバは、プログラマが設定する値である。GetProperty の場合は、現在の値がデータ メンバに返される。

GetProperty または SetProperty を呼び出す前に、DIPROPHEADER 構造体を以下の値で初期化しておかなければならない。

デバイス全体からプロパティを取得したり設定したりする場合、オブジェクト識別子 dwObj は、ゼロであり、dwHow メンバは、DIPH_DEVICE である。1 つのデバイス オブジェクト (たとえば、特定の軸) に対してプロパティを設定または取得したい場合は、dwObjdwHow の組み合わせ値により、そのオブジェクトが識別される。詳細については、「DIPROPHEADER 構造体」を参照すること。

プロパティ構造体の設定後、取得または変更したいプロパティの識別子と共に、構造体のヘッダーのアドレスを、GetProperty または SetProperty に渡す。

SetProperty および GetProperty に渡されるプロパティを識別するために、以下の値が使用される。詳細については、「IDirectInputDevice8::GetProperty」を参照すること。

最後の 3 つのプロパティについての詳細は、「ジョイスティック軸データの解釈」も参照すること。

以下のサンプル コードでは、10 個のデータ項目を保持するようにデバイスのバッファ サイズを設定する。

DIPROPDWORD  dipdw; 
HRESULT      hr; 
dipdw.diph.dwSize = sizeof(DIPROPDWORD); 
dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER); 
dipdw.diph.dwObj = 0; 
dipdw.diph.dwHow = DIPH_DEVICE; 
dipdw.dwData = 10; 
hr = lpdiDevice->SetProperty(DIPROP_BUFFERSIZE, &dipdw.diph);