Platform SDK: DirectX

サンプル関数 1 : DI_Init

[Visual Basic]

ここでは、C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectInput Visual Basic チュートリアル」を参照すること。

[C++]

このアプリケーション定義サンプル関数は、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;
}