Platform SDK: DirectX |
ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectInput Visual Basic チュートリアル」を参照すること。
DirectInput オブジェクトの作成後、アプリケーションはキーボード オブジェクト (デバイス) を作成し、IDirectInputDevice7 インターフェイスへのポインタを取得しなければならない。デバイスは、このインターフェイスのメソッドを使用して、キーボード関連タスクの大半を実行する。
このポインタを取得するには、「サンプル関数 1 : DI_Init」で示すように、IDirectInput7::CreateDeviceEx メソッドを呼び出さなければならない。CreateDeviceEx は、4 つのパラメータを取る。
第 1 パラメータは、作成するデバイスの GUID である。キーボード システムが使用されることになるので、事前に定義されたグローバル変数を GUID_SysKeyboard に渡す。
第 2 パラメータは、目的のインターフェイスの GUID である。ほとんどのアプリケーションは IID_IDirectInputDevice7 を渡すことで、最新のバージョンを取得する。
第 3 パラメータは、呼び出しが成功した場合に、取得したインターフェイス ポインタで初期化される変数のアドレスである。
第 4 パラメータは、COM 集合化で使用する制御オブジェクトの IUnknown インターフェイスのアドレスである。集合化を使用しない場合には、このパラメータを NULL にする。
以下のコードは、IDirectInputDevice7 インターフェイスへのポインタを取得しようとする例である。失敗した場合には、DI_Term アプリケーション定義サンプル関数を呼び出し、既存の DirectInput オブジェクトがあればその割り当てを解除する。
注 : すべての例の g_lpdi は、DirectInput オブジェクトに対する初期化されたポインタである。メソッド呼び出しは、C++ 形式である。
HRESULT hr; LPDIRECTINPUTDEVICE7 g_lpDIDEVICE hr = g_lpDI->CreateDeviceEx(GUID_SysKeyboard, IID_IDirectInputDevice7, (void**)&g_lpDIDevice, NULL); if FAILED(hr) { DI_Term(); return FALSE; }