Microsoft DirectX 8.0 (Visual Basic)

ステップ 1 : デバイスの列挙とジョイスティックの作成

システム キーボードやシステム マウスと同じ意味でのシステム ジョイスティックというものはなく、ジョイスティックの DirectInputDevice8 オブジェクトを作成するには、まずインスタンス GUID (グローバル ユニーク識別子) を取得する必要がある。通常、これは利用可能なジョイスティックを列挙し、ユーザーに選択肢を提示して、選択されたデバイスの情報を取得することにより実現される。

すべてのデバイスと同様に、最初に DirectInput システムを作成する必要がある。

Dim dx As New DirectX8
Dim di As DirectInput8

Set di = dx.DirectInputCreate()

次の手順では、DirectInput8.GetDIDevices メソッドを使ってデバイスを列挙する。このメソッドのパラメータとして、アプリケーションがシステムにアタッチされているゲーム コントローラ デバイスだけを列挙するよう指示するフラグが渡される。列挙の結果は、DirectInputEnumDevices8 クラスのインスタンスに格納される。

Dim diDev As DirectInputDevice8
Dim diDevEnum As DirectInputEnumDevices8

Set diDevEnum = di.GetDIDevices( _
            DI8DEVCLASS_GAMECTRL, DIEDFL_ATTACHEDONLY)

列挙が終了し、最低 1 つのジョイスティックが検出されたと仮定すると、その情報を操作できる。Joystick サンプルの例では、デバイスがリスト ボックスに追加され、ユーザーはそこから選択することができる。DirectInputEnumDevices8.GetCount メソッドは、列挙に格納される項目数を指定する。

'アタッチされているジョイスティックをリスト ボックスに追加する。
Dim i As Integer
For i = 1 To diDevEnum.GetCount
    Call lstJoySticks.AddItem( _
        diDevEnum.GetItem(i).GetInstanceName)
Next

GetInstance はデバイスのわかりやすい名前を返す。

この時点で、Joystick サンプルはイベント ハンドラを初期化して、デバイスに関連付ける。この手順は、「ステップ 2 : ジョイスティックの能力の取得」の最後で使用する。

Dim EventHandle as Long
EventHandle = dx.CreateEvent(Me)

ユーザーがリストからジョイスティックを選択すると、そのデバイスが作成され、lstJoySticks_Click プロシージャ内で初期化される。システム キーボードやシステム マウスとは異なり、DirectInput8.CreateDevice に渡す標準 GUID がないため、デバイス インスタンスの GUID を DirectInputDeviceInstance8.GetGuidInstance メソッドを使って取り出す必要がある。Microsoft DirectX® for Microsoft Visual Basic® のすべての列挙コレクションと同様、デバイスの列挙は 1 がベースであることに注意する。したがって、インデックスはリスト ボックス内の選択項目のインデックスより 1 つ大きくなる。 また、リスト ボックスはソートしない。

Set diDev = di.CreateDevice(diDevEnum.GetItem( _
        lstJoySticks.ListIndex + 1).GetGuidInstance)

またジョイスティックは、協調レベルと形式に対して初期化する必要がある。この例では、DIFORMAT_JOYSTICK 形式が使用されている。さらにコントロールの種類が多いジョイスティックでは、もう 1 つの形式の DIFORMAT_JOYSTICK2 も使用することができる。

diDev.SetCommonDataFormat DIFORMAT_JOYSTICK
diDev.SetCooperativeLevel Me.hWnd, _
        DISCL_BACKGROUND Or DISCL_NONEXCLUSIVE

デバイス上のオブジェクトを列挙しようとしたり、プロパティを操作しようとしたりする前に、データ形式を設定する必要がある。

ジョイスティックが作成できたら、「ステップ 2 : ジョイスティックの能力の取得」でその能力を調べる。