Platform SDK: DirectX |
ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「DirectInput C/C++ チュートリアル」を参照すること。
DirectInputDevice を作成したら、デバイスのデータ形式を設定しなければならない。キーボードの場合は、その他の標準デバイスと同様に、非常に簡単なタスクである。DirectInputDevice.SetCommonDataFormat メソッドを呼び出す。パラメータとして DIFORMAT_KEYBOARD を渡すことで、便宜上 DirectInput で用意されたデータ形式を指定する。
Call didev.SetCommonDataFormat(DIFORMAT_KEYBOARD)
バッファリング データを取得する場合であっても、データ形式を設定しなければならない。DirectInput では、データ形式内のオフセットでデバイス オブジェクトを識別する。キーボードの場合、キーは DIKEYBOARDSTATE 型内のオフセットで識別される。
アプリケーションは、キーボードへのアクセス権を取得する前に、次のように DirectInputDevice.SetCooperativeLevel メソッドを使ってデバイスの動作を設定しなければならない。
didev.SetCooperativeLevel Me.hWnd, _ DISCL_NONEXCLUSIVE Or DISCL_BACKGROUND
このメソッドは、デバイスに関連付けられたウィンドウのハンドルと、必要な協調レベルを示す 2 つのフラグ (DISCL_EXCLUSIVE と DISCL_NONEXCLUSIVE のいずれか、および DISCL_FOREGROUND と DISCL_BACKGROUND のいずれか) を受け取る。DirectInput は、キーボード デバイスに対する排他アクセス権をサポートしていないので、この場合は DISCL_NONEXCLUSIVE フラグを指定しなければならない。
また、この例ではバックグラウンド協調レベルを設定し、フォームがフォアグラウンドにあるかどうかにかかわらず入力を受け付けるようにしている。キー ストロークは引き続き、フォーカスを持つアプリケーションに渡されることに注意すること。大部分のアプリケーションはバックグラウンドにある間に入力を受け付ける必要はない。また、そのような場合には、DISCL_FOREGROUND フラグを設定するべきである。