Platform SDK: DirectX

DirectX 列挙

[C++]

ここでは、Visual Basic でのアプリケーション開発について説明する。

[Visual Basic]

ほとんどの DirectX アプリケーションは、通常初期化時に、使用可能なリソースを列挙する必要がある。たとえば、DirectDraw を使用するアプリケーションは使用可能な表示モードを判定する必要があり、または DirectInput を使用するアプリケーションはジョイスティックで使用可能なボタンや軸を列挙する必要がある。

DirectX for Visual Basic では、アプリケーションが列挙オブジェクトを取得すると自動的に列挙が処理される。列挙オブジェクトが作成されると、コレクションが構築される。このコレクションはオブジェクトが存在する限り存在し、列挙オブジェクトのメソッドを使用してアクセスできる。

列挙オブジェクトの中には、DirectX7 オブジェクトから取得しなければならないものがある。たとえば、DirectSound デバイスを列挙するには、DirectX7.GetDSEnum メソッドを呼び出す。コレクションから適切なデバイスの GUID を取得した後でなければ、DirectSound オブジェクトを作成することはできない。

その他の列挙オブジェクトは、DirectX コンポーネント オブジェクトから取得される。たとえば、DirectInput オブジェクトを取得すれば、DirectInput.GetDIEnumDevices メソッドを呼び出して入力デバイスの列挙オブジェクトを取得できる。

次のサンプル コードでは、システムにアタッチされているすべての入力デバイスが列挙される。ただし、diDirectInput オブジェクトである。

Dim diEnum As DirectInputEnumDevices
Set diEnum = di.GetDIEnumDevices(0, DIEDFL_ATTACHEDONLY)

DirectInputEnumDevices オブジェクトの 2 つのメソッドを使用すれば、アタッチされたデバイスを繰り返し検索し、特定の能力を持つデバイスを検索したり、またはほかの処理を実行できる。次の例では、デバイスの名前をリスト ボックスに設定する。

Dim diDevice As DirectInputDeviceInstance
Dim X As Integer

For X = 1 To diEnum.GetCount
    Set diDevice = diEnum.GetItem(X)
    Call List1.AddItem(diDevice.ProductName)
Next X 

ただし、DirectX 列挙により作成されたコレクションはすべて 1 ベースである。