DirectInput の使用方法

このトピックでは、Microsoft DirectX の実装について説明します。概要については、「DirectInput について」でさらにさまざまな面から説明しています。

このプログラミング ガイドでは、次の項目についても説明します。

DirectInput の作成

すべての Microsoft DirectInput アプリケーションで、最初の手順は IDirectInput8 インターフェイス の取得です。最も簡単な方法は、DirectInput8Create 関数を呼び出すことです。

1 つの DirectInput オブジェクトを作成し、アプリケーションが終了するまで解放しないでください。

DirectInput デバイスの列挙

DirectInput は、使用可能なすべての入力デバイスをシステムにクエリし、それらが接続されているかどうかを判別し、デバイスに関する情報を返すことができます。このプロセスは列挙と呼ばれます。

アプリケーションが標準のキーボードまたはマウス、またはその両方のみを使用する場合は、使用可能な入力デバイスを列挙する必要はありません。「DirectInput デバイスの作成」で説明されているように、IDirectInput8::CreateDevice メソッドを呼び出すときには定義済みのグローバル変数を使用できます。

次のコード例では、lpdiIDirectInput8 インターフェイス へのポインターで、キーボード デバイスを作成しています。

LPDIRECTINPUTDEVICE8  lpdiKeyboard; 

lpdi->CreateDevice(GUID_SysKeyboard, &lpdiKeyboard, NULL); 

IDirectInput8::CreateDevice の最初のパラメーターは、インターフェイスを作成するデバイスのインスタンスを識別するインスタンス GUID です。Microsoft DirectInput には、2 つの定義済み GUID、GUID_SysMouse と GUID_SysKeyboard があります。これらは、それぞれシステム マウスとシステム キーボードを表します。これらの識別子のいずれかを IDirectInput8::CreateDevice メソッドに渡すことができます。グローバル変数 GUID_Joystick は、インスタンス GUID ではなく製品 GUID であるため、IDirectInput8::CreateDevice のパラメーターとして使用しないでください。

    コンピューターに複数のマウスが存在する場合は、すべてのマウス入力が組み合わせられ、システム デバイスを形成します。キーボードが複数ある場合も同じです。

DirectInput には、主としてテスト用に、他にも 4 つの定義済み GUID があります。

  • GUID_SysKeyboardEm
  • GUID_SysKeyboardEm2
  • GUID_SysMouseEm
  • GUID_SysMouseEm2

これらの GUID のいずれかを IDirectInput8::CreateDevice に渡すことにより、レベル 1 またはレベル 2 のエミュレーション レイヤーからシステム キーボードまたはシステム マウスへのアクセスが許可されます。これらの GUID は、常にシステム マウスまたはシステム キーボードを表します。これらは GUID_SysKeyboard および GUID_SysMouse のエイリアスであるため、DIEDFL_INCLUDEALIASES フラグが渡された場合以外は IDirectInput8::EnumDevicesIDirectInput8::EnumDevicesBySemantics で列挙されません。

システム マウスまたはシステム キーボード以外のデバイスの場合は、IDirectInput8::EnumDevices または IDirectInput8::EnumDevicesBySemantics によって返されたデバイスのインスタンス GUID を使用します。デバイスのインスタンス GUID は、常に同じです。ユーザーがこれらの列挙されたリストからデバイスを選択し、構成ファイルに GUID を保存して、その後のセッションで再利用できるようにすることができます。