質問

私は、各デバイス上のデバイスおよび要素を列挙し、入力デバイスを処理するためにDirectInputのを使用します。

私のゲームパッドにアナログスティックを使用している場合は、彼らは範囲0〜65535の値を報告しています。これはの常にの絶対軸のすべてのタイプのケースですか?

でない場合は、次の(DIDFT_ABSAXISを列挙)DX8入力要素のDIDEVICEOBJECTDATA :: dwDataの範囲を見つけるためにどのような方法がありますか?私は考えることができる唯一の他の選択肢が本当であるには余りにも80年代の私のアプリ内の内部キャリブレーションを行ったいくつかの家、そしてその音を使用することです。

役に立ちましたか?

解決 2

ゴズはそう甘くそれを置くように、私でし働い以下、ます:

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

BOOL CALLBACK EnumElementsCallback(LPCDIDEVICEOBJECTINSTANCE dev, LPVOID)
{
    if ((dev->dwType & DIDFT_ABSAXIS) != 0)
    {
        DIPROPRANGE range;
        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;
        }
    }
}

他のヒント

あなたはGetPropertyメソッドを使用して満たされるべき適切なDIPROPRANGE構造を渡し範囲を取得することができませんか? DIPROP_RANGE GUIDを使用します。

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

ゲームコントローラドライバは、通常、軸の位置情報を報告します 0と655の間の整数値はDIRECTINPUTするように。直接入力 直線的に0〜65535までのこれらの値をスケーリングします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top