Platform SDK: DirectX |
DirectInput の基本的アーキテクチャは、IDirectInput7 COM インターフェイスをサポートする DirectInput オブジェクト、およびデータを提供する入力デバイスごとのオブジェクトで構成される。各デバイスは、デバイス オブジェクト インスタンスまたは単なるデバイス オブジェクトを持つ。これらは、キー、ボタン、軸などの個別の制御手段またはスイッチである。
注 : オブジェクトという言葉は、コード オブジェクトを説明するのに使われることもあれば、入力デバイスでの個別の制御手段の 1 つを説明するのに使われることもある。ここでいうデバイス オブジェクトは、IDirectInputDevice7 インターフェイスをインスタンス化するコード オブジェクトではなく、入力デバイスの制御手段を表す。デバイス総体を表すコード オブジェクトは、DirectInputDevice オブジェクトと呼ぶ。
それぞれの DirectInputDevice オブジェクトは、マウス、キーボード、またはジョイスティックなどの入力デバイスを表す。タッチパッド付きキーボードなど、実際には異なる種類の入力デバイスを組み合わせた物理デバイスは、2 つまたはそれ以上の DirectInputDevice オブジェクトとして表される。フォース フィードバック デバイスは、入力と出力の両方を操作する 1 つのジョイスティック オブジェクトとして表される。
DirectInputDevice オブジェクトは、IDirectInputDevice7 インターフェイスをインスタンス化する。
アプリケーションは、デバイス上で使用可能なオブジェクトの数とタイプを IDirectInputDevice7::EnumObjects メソッドを使って確認する。個別のデバイス オブジェクトは、コード オブジェクトとしてカプセル化されずに、DIDEVICEOBJECTINSTANCE 構造体として記述される。
フォース フィードバック エフェクトは、IDirectInputEffect インターフェイスにより表される。このインターフェイスの各メソッドを使って、エフェクトの生成、変更、開始、および停止を行う。
すべての DirectInput インターフェイスは、ANSI 版と Unicode 版で使用できる。コンパイル時に「UNICODE」が定義されている場合は、UNICODE 版が使用される。
DirectInput の基本的アーキテクチャは、アプリケーションが使用している入力デバイスごとに 1 つの DirectInput オブジェクトと DirectInputDevice オブジェクトで構成される。DirectInputDevice オブジェクトは、入力データを取得するのに使用される。
また、すべての使用可能なデバイスは、DirectInput により使用されているかどうかにかかわらず、DirectInputDeviceInstance オブジェクトで表現できる。このオブジェクトを使うことで、そのデバイスに関するさまざまな情報を取得できる。
各 DirectInputDevice オブジェクトは、マウス、キーボード、またはジョイスティックなどの入力デバイスを表す (このドキュメントでは、ジョイスティックという用語には、マウスやキーボード以外のあらゆるゲーム コントローラが含まれる)。タッチパッド付きキーボードなど、実際には異なる種類の入力デバイスを組み合わせた物理デバイスは、2 つまたはそれ以上の DirectInputDevice オブジェクトとして表される。フォースフィードバック デバイスは、入力と出力の両方を操作する 1 つのジョイスティック オブジェクトとして表される。
各デバイスは、キー、ボタン、軸などの個別の制御手段またはスイッチであるデバイス オブジェクトを持つ。各デバイス オブジェクトは、DirectInputDeviceObjectInstance クラスのインスタンスにより表現される。このメソッドを使うことで、そのデバイス オブジェクトに関する情報を取得できる (ただし、入力データは常に DirectInputDevice で取得する)。
注 : オブジェクトという言葉は、コード オブジェクトを説明するのに使われることもあれば、入力デバイスでの個別の制御手段の 1 つを説明するのに使われることもある。ここでいうデバイス オブジェクトは、DirectInputDevice オブジェクトではなく、入力デバイスの制御手段を表す。
デバイスとデバイス オブジェクトは列挙できる。列挙結果のコレクションは、DirectInputEnumDevices オブジェクトと DirectInputEnumDeviceObjects オブジェクトで表される。