Platform SDK: DirectX |
ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectInput Visual Basic チュートリアル」を参照すること。
ジョイスティックの動作を設定したら、アプリケーションは、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 の呼び出しを簡単にするものである。