Platform SDK: DirectX |
マウスの x 軸および y 軸に対して返されるデータは、カーソルではなくマウス自身の動作を示す。測定単位は、マウスのハードウェアが返す値に基づくものであり、ピクセルやその他の画面測定形式とは無関係である。DirectInput はマウス ドライバと直接通信するので、ユーザーがコントロール パネルで設定するマウスのスピードと加速値は、このデータに影響しない。
マウスから返される軸データは、相対でも絶対でもよい (「相対座標と絶対座標」も参照すること)。マウスは相対的なデバイスなので (ジョイスティックとは異なり、ホームポジションを持たない)、デフォルトでは、相対データが返される。
軸モードは、相対データまたは絶対データのどちらを返すかを指定するもので、デバイスを取得する前に変更できるプロパティである (「デバイス プロパティ」を参照すること)。軸モードを "絶対" に設定するには、rguidProp パラメータに DIPROP_AXISMODE 値を指定し、DIPROPDWORD 構造体の dwData メンバに DIPROPAXISMODE_ABS を指定して、IDirectInputDevice7::SetProperty を呼び出す。
軸モードは、相対データまたは絶対データのどちらを返すかを指定するものであるが、デバイスを取得する前に変更できるプロパティである (「デバイス プロパティ」を参照すること)。軸モードを "絶対" に設定するには、guid パラメータに DIPROP_AXISMODE 値を指定し、DIPROPDWORD 型の lData メンバに DIPROPAXISMODE_ABS を指定して、DirectInputDevice.SetProperty を呼び出す。
マウスの軸モードが "相対" の場合、軸座標は、最後の値が返されて以降、軸にそってデバイスが移動した単位数を表す。負の値は、x軸の場合、マウスが左方向に移動したこと、y 軸の場合、ユーザーから離れる方向にマウスが移動したこと、および z 軸 (ホイール) が手前に回転したことをそれぞれ示す。正の値はこれと反対方向の動きを示す。
軸モードが "絶対" の場合、軸座標は、単純に DirectInput が受信した相対動作のすべての累積合計となる。軸座標値は、デバイスの取得時には、特定の値に初期化されていないので、アプリケーションは、絶対値を未知の原点を基準にした相対値として扱う必要がある。デバイスを取得したときは、いつも現在の絶対位置を記録して、それを "仮想原点" として保存することができる。この仮想原点は、その後、デバイスから得られる絶対座標から減算することにより、マウスが取得時点から移動した相対距離を計算することができる。
軸座標に返されるデータは、デバイスの細分性プロパティによっても影響を受ける。マウスの x 軸と y 軸の場合、細分度は通常 1 であり、これは、値の最小変化が 1 であることを意味する。ホイールの場合、細分度が 1 より大きくなることもある。