Platform SDK: DirectX |
ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectInput Visual Basic チュートリアル」を参照すること。
このアプリケーション定義サンプル関数は、DirectInput オブジェクトを作成して初期化し、必要なインターフェイス ポインタを取得して、それらのポインタをグローバル変数に割り当てる。初期化が完了したら、デバイスを取得する。
初期化のどの部分で失敗しても、この関数は、DI_Term アプリケーション定義サンプル関数を呼び出し、プログラムを終了する準備として、DirectInput オブジェクトとインターフェイス ポインタの割り当てを解除する (「サンプル関数 2 : DI_Term」を参照)。
DI_Init 関数は、DirectInput オブジェクトを作成することに加えて、以下のチュートリアル手順で説明されているタスクを実行する。
以下は、DI_Init 関数である。
/ * 次の変数は初期化済みとする。 HINSTANCE g_hinst; // アプリケーションインスタンス HWND g_hwndMain; // アプリケーション ウィンドウ */ LPDIRECTINPUT7 g_lpDI; LPDIRECTINPUTDEVICE7 g_lpDIDevice; BOOL WINAPI DI_Init() { HRESULT hr; // DirectInput オブジェクトを作成する。 hr = DirectInputCreateEx(g_hinst, DIRECTINPUT_VERSION, IID_IDirectInput7, (void**)&g_lpDI, NULL); if FAILED(hr) return FALSE; // IDirectInputDevice7 インターフェイスへのポインタを取得する。 hr = g_lpDI->CreateDeviceEx(GUID_SysKeyboard, IID_IDirectInputDevice7, (void**)&g_lpDIDevice, NULL); if FAILED(hr) { DI_Term(); return FALSE; } // IDirectInputDevice7 インターフェイスを保持して、 // 使用準備が整ったところである。 // キーボード用 DirectInput オブジェクトが作る、事前定義された // キーボード データ形式を用いて、データ形式を設定する。 hr = g_lpDIDevice->SetDataFormat(&c_dfDIKeyboard); if FAILED(hr) { DI_Term(); return FALSE; } // 協調レベルを設定する。 hr = g_lpDIDevice->SetCooperativeLevel(g_hwndMain, DISCL_FOREGROUND | DISCL_NONEXCLUSIVE); if FAILED(hr) { DI_Term(); return FALSE; } // 入力デバイスにアクセスする。 hr = g_lpDIDevice->Acquire(); if FAILED(hr) { DI_Term(); return FALSE; } return TRUE; }