Microsoft DirectX 8.0 (C++) |
このアプリケーション定義サンプル関数は、Microsoft® DirectInput® オブジェクトを作成して初期化し、必要なインターフェイス ポインタを取得して、それらのポインタをグローバル変数に割り当てる。初期化が完了したら、デバイスを取得する。
初期化のどの部分で失敗しても、この関数は、DI_Term アプリケーション定義サンプル関数を呼び出し、プログラムを終了する準備として、DirectInput オブジェクトとインターフェイス ポインタの割り当てを解除する (「サンプル関数 2 : DI_Term」を参照すること。
DI_Init 関数は、DirectInput オブジェクトを作成することに加えて、以下のチュートリアル手順で説明されているタスクを実行する。
以下は、DI_Init 関数を示している。
/ * 次の変数は初期化済みと見なされる。 HINSTANCE g_hinst; // アプリケーション インスタンス。 HWND g_hwndMain; // アプリケーション ウィンドウ。 */ LPDIRECTINPUT8 g_lpDI; LPDIRECTINPUTDEVICE8 g_lpDIDevice; BOOL WINAPI DI_Init() { HRESULT hr; // DirectInput オブジェクトを作成する。 hr = DirectInput8Create(g_hinst, DIRECTINPUT_VERSION, IID_IDirectInput8, (void**)&g_lpDI, NULL); if FAILED(hr) return FALSE; // IDirectInputDevice8 インターフェイスへのポインタを取得する。 hr = g_lpDI->CreateDevice(GUID_SysKeyboard, &g_lpDIDevice, NULL); if FAILED(hr) { DI_Term(); return FALSE; } // IDirectInputDevice8 インターフェイスを保持して、 // 使用準備が整ったところである。 // キーボード用 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; }