1

DirectInput を使用して入力デバイスを処理し、デバイスと各デバイスの要素を列挙します。

ゲーム パッドでアナログ スティックを使用すると、0 ~ 65535 の範囲の値が報告されます。これはすべてのタイプの絶対軸に常に当てはまりますか?

そうでない場合: DX8 入力要素の DIDEVICEOBJECTDATA::dwData (DIDFT_ABSAXIS で列挙) の範囲を調べる方法はありますか? 私が考えることができる他の唯一のオプションは、アプリ内で自家製の内部キャリブレーションを使用することですが、それはあまりにも80年代に聞こえます.

4

3 に答える 3

6

GetProperty を使用して範囲を取得し、適切な DIPROPRANGE 構造体を渡して入力することはできませんか? DIPROP_RANGE GUID を使用します。

于 2009-07-01T09:35:14.137 に答える
3

ゴズがとても甘く言ったように、私は次のことを行いました。

dev->EnumObjects(EnumElementsCallback, 0, DIDFT_ALL);

BOOL CALLBACK EnumElementsCallback(LPCDIDEVICEOBJECTINSTANCE dev, LPVOID)
{
    if ((dev->dwType & DIDFT_ABSAXIS) != 0)
    {
        DIPROPRANGE範囲;
        range.diph.dwSize = sizeof(DIPROPRANGE);
        range.diph.dwHeaderSize = sizeof(DIPROPHEADER);
        range.diph.dwHow = DIPH_BYID;
        range.diph.dwObj = dev->dwType;
        if (lDevice->mDIDevice->GetProperty(DIPROP_RANGE, &range.diph) == DI_OK)
        {
            ... = range.lMin;
            ... = range.lMax;
        }
    }
}
于 2009-07-01T23:27:40.227 に答える
0

から: http://www.wingmanteam.com/files/Tools/DXTweak/Readme.txt

通常、ゲーム コントローラー ドライバーは、軸の位置情報を 0 ~ 655 の整数値として DirectInput に報告します。DirectInput は、これらの値を 0 から 65535 まで直線的にスケーリングします。

于 2009-07-01T09:52:05.023 に答える