Microsoft DirectX 8.0 (Visual Basic) |
デバイス上のボタン、軸、および視点コントローラについての情報を取得するには、DirectInputDevice8.GetCapabilities を呼び出すだけでよい。
Dim joyCaps As DIDEVCAPS diDev.GetCapabilities joyCaps
Joystick サンプルが知る必要があるのは、デバイス上のボタンと視点コントローラの数のみである。DIDEVCAPS 型は、デバイス上の軸の数も報告するが、軸の状態については一切情報を公開しない。この情報を知るために、サンプルは独自の IdentifyAxes プロシージャを呼び出す。まず変数を宣言し、使用可能な軸の存在または不在を示すブール値を保持する配列を初期化する。
Sub IdentifyAxes(diDev As DirectInputDevice8) Dim didoEnum As DirectInputEnumDeviceObjects Dim dido As DirectInputDeviceObjectInstance Dim i As Integer For i = 1 To 8 AxisPresent(i) = False Next
プロシージャは、デバイスのデバイス オブジェクトの列挙に進む。DIDFT_AXIS 値は、軸の列挙を制限する。
Set didoEnum = diDev.GetDeviceObjectsEnum(DIDFT_AXIS)
DirectInputDevice8.SetCommonDataFormat の呼び出しで以前に設定されたデータ形式の中で、そのオフセットごとに DirectInputDeviceObjectInstance を問い合わせる。このオフセットにより、軸の従来の役割やタイプが識別される。たとえば、GUID_RzAxis は、メイン スティックのひねり動作に対応することがわかる。ただし、デバイス ドライバは、軸に対して自由に指示を割り当てることができる。ユーザーがアプリケーション内で軸とアクションの対応を変更できるようにしておくのは良いアイデアである。
Dim sGuid as String For i = 1 To didoEnum.GetCount Set dido = didoEnum.GetItem(i) sGuid = didoEnum.GetItem(i) Select Case sGuid Case "GUID_Xaxis" AxisPresent(1) = True Case "GUID_Yaxis" AxisPresent(2) = True ' 以下同様。 . . . End Select Next End Sub
次に、アプリケーションは、以前に作成されたイベント ハンドルをデバイスに渡す。これにより、入力イベントが発生すると、通知はフォームに送信される。
Call diDev.SetEventNotification(EventHandle)
次は、「ステップ 3 : ジョイスティックのプロパティの設定」でジョイスティックのプロパティを設定する。