Platform SDK: DirectX |
ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectInput Visual Basic チュートリアル」を参照すること。
これまでにアプリケーションは、DirectInput デバイスへのポインタを取得しているので、IDirectInputDevice7 メソッドを呼び出して、そのデバイスを操作することができる。ここではまず、ジョイスティックのデータ形式を設定する。この手順は不可欠である。この手順では、DirectInput に対して入力データの書式を設定する方法を指示する。
Space Donuts サンプルでは、前のステップで導入したコールバック関数でこの処理を実行する。
if (pdev->lpVtbl->SetDataFormat(pdev, &c_dfDIJoystick) != DI_OK) { OutputDebugString("IDirectInputDevice7::SetDataFormat FAILED\n"); pdev->lpVtbl->Release(pdev); return DIENUM_CONTINUE; }
pdev 変数は、IDirectInput7::CreateDeviceEx が作成したデバイス インターフェイスへのポインタである。
IDirectInputDevice7::SetDataFormat メソッドは、2 つのパラメータを取る。第 1 パラメータは、このインターフェイスの呼び出し側インスタンスに対するポインタであり、C++ では不要である。第 2 パラメータは、デバイスのデータの書式設定方法に関する情報を格納する DIDATAFORMAT 構造体へのポインタである。ジョイスティックの場合は、事前定義されたグローバル変数 c_dfDIJoystick をここで使用できる。
前のステップのように、コールバック関数は、デバイスの初期化に失敗した場合に DIENUM_CONTINUE を返す。このフラグは、列挙対象のデバイスが存在する限り、列挙を続行することを DirectInput に指示する。