次の方法で共有


ステップ 6 :ジョイスティックからのデータの取得

ステップ 6 :ジョイスティックからのデータの取得

アプリケーションでは、ジョイスティック軸の移動よりも、ジョイスティック軸の位置の方が重要であることが多いので、デバイスからは、バッファリング データよりも直接データを取得することがよく行われる。直接データは、IDirectInputDevice8::GetDeviceState でポーリングすることによって取得できる。デバイスの状態が変化したときに、すべてのデバイス ドライバが Microsoft® DirectInput® に通知するわけではない。したがって、デバイスの状態を確認する前に IDirectInputDevice8::Poll メソッドを呼び出すことを勧める。

Joystick アプリケーションは、Microsoft Windows® メッセージ ループから次の関数を呼び出す。

HRESULT UpdateInputState(HWND hDlg)
{
    HRESULT     hr;
    CHAR        strText[128]; // Device state text
    DIJOYSTATE2 js;           // Direct Input joystick state 
    CHAR*       str;

    if (NULL == g_pJoystick) 
        return S_OK;

    // Poll the device to read the current state
    hr = g_pJoystick->Poll(); 
    if (FAILED(hr))  
    {
        // Attempt to reacquire joystick
    }
    hr = g_pJoystick->GetDeviceState(sizeof(DIJOYSTATE2), &js);
    if (FAILED(hr))
return hr;

IDirectInputDevice8::GetDeviceState の呼び出しに注意する。最初の引数は、データが返される構造体のサイズである。第 2 引数は、DIJOYSTATE2 型であるこの構造体のアドレスである。この構造体は、最大 6 つの軸、128 のボタン、および 4 つの視点ハットを保持する。サンプル プログラムは、すべての軸とボタン、および 1 つのスライダの状態を確認する。次に、この情報がメイン ダイアログ ウィンドウに表示される。

ジョイスティック ボタンは、キーまたはマウス ボタンとまったく同じように機能する。戻り値バイトの上位ビットが 1 の場合は、ボタンが押されていることを示す。

その他の DirectInput チュートリアルについては、「DirectInput C/C++ チュートリアル」を参照すること。