Microsoft DirectX 8.0 (C++) |
デバイスから入力データを取得するには、まずそのデバイスを表すオブジェクトを作成しなければならない。
IDirectInput8::CreateDevice メソッドを使って、IDirectInputDevice8 インターフェイスへのポインタを取得する。その後、このインターフェイスのメソッドを使って、デバイスの操作とデータの取得を行う。
次のコードは、キーボード デバイスを作成する例である。lpdi は IDirectInput8 インターフェイスへのポインタである。
LPDIRECTINPUTDEVICE8 lpdiKeyboard; lpdi->CreateDevice(GUID_SysKeyboard, &lpdiKeyboard, NULL);
CreateDevice の最初のパラメータはインスタンス GUID であり、インターフェイスの作成対象デバイスのインスタンスを識別する。Microsoft® DirectInput® には、事前定義された 2 つの GUID (GUID_SysMouse および GUID_SysKeyboard) があり、それぞれシステム マウスとシステム キーボードを表す。これらの識別子の 1 つを CreateDevice メソッドに渡すことができる。CreateDevice メソッドのパラメータとして、グローバル変数の GUID_Joystick を使用してはならない。GUID_Joystick は製品 GUID であり、インスタンス GUID ではないからである。
注 : コンピュータに 2 つ以上のマウスがある場合は、すべてのマウスが結合されてシステムデバイスを形成する。キーボードについても同様である。
DirectInput は、このほかにも主にテストに使用する事前定義された 4 つの GUID を用意している。
この GUID の 1 つを CreateDevice に渡すことで、列挙レイヤーを介して、システム キーボードやシステム マウスに対するレベル 1 またはレベル 2 のアクセス権が付与される。これらの GUID は、常にシステム マウスやシステム キーボードを表す。これらはGUID_SysKeyboard および GUID_SysMouse のエイリアスであり、DIEDFL_INCLUDEALIASES フラグが渡されなければ、IDirectInput8::EnumDevices または IDirectInput8::EnumDevicesBySemantics では列挙されない。
システム マウスまたはシステム キーボード以外のデバイスの場合は、EnumDevices または EnumDevicesBySemantics で返されるデバイスのインスタンス GUID を使用する。1 つのデバイスに対するインスタンス GUID は常に同一である。列挙したリストからユーザーに 1 つのデバイスを選択させ、その GUID を構成ファイルに保存しておくと、後のセッションでその GUID を再び使用することができる。