Platform SDK: DirectX

ステップ 5 : ジョイスティックへのアクセス権の取得

[Visual Basic]

ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectInput Visual Basic チュートリアル」を参照すること。

[C++]

ジョイスティックの動作を設定したら、アプリケーションは、IDirectInputDevice7::Acquire メソッドを呼び出して、デバイスに対するアクセス権を取得できる。アプリケーションは、デバイスからデータを取得する前に、デバイスを取得しなければならない。Acquire メソッドには、パラメータはない。

Space Donuts アプリケーションは、ReacquireInput 関数の中でデバイスの取得を処理している。この関数は、二重の機能を実行する。すなわち、スタートアップ時にデバイスを取得する機能、そしてアプリケーションが入力データの取得を試みて、何らかの理由で DIERR_INPUTLOST エラーが返されたときにデバイスを再取得する機能である。

以下のコードでは、g_pdevCurrent は、現在使用されている DirectInput デバイスが何であれ、それに対するグローバル ポインタである。

BOOL ReacquireInput(void) 
{ 
    HRESULT hRes; 
 
    // 現デバイスがあれば、
    if (g_pdevCurrent) 
    { 
        // それを取得する。
        hRes = IDirectInputDevice_Acquire(g_pdevCurrent); 
        // この呼び出しは、次のように展開されるマクロである。
        // g_pdevCurrent->lpVtbl->Acquire(g_pdevCurrent); 
 
        if (SUCCEEDED(hRes)) 
        { 
            // 取得成功。
            return TRUE; 
        } 
        else 
        { 
            // 取得失敗。
            return FALSE; 
        } 
    } 
    else 
    { 
        // 現デバイスがない。
        return FALSE; 
    } 
} 
 

この例では、デバイスの取得は、Dinput.h で定義されている IDirectInputDevice_Acquire マクロの呼び出しによって実現されている。このマクロは、IDirectInputDevice7::Acquire メソッドに対する C の呼び出しを簡単にするものである。

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