Microsoft DirectX 8.0 (Visual Basic) |
デバイスからの入力を要求する前に、ユーザーがその能力をある程度知っておく必要がある。ジョイスティックに視点ハットが付いているか。マウスはユーザーのマシンに現在アタッチされているか。
そうした疑問点は、DirectInputDevice8.GetCapabilities メソッドを呼び出すことにより解決することができる。このメソッドは、能力に関するデータを DIDEVCAPS 型に返す。
以下のコードは、マウスがアタッチされているかどうか、およびマウスが第 3 軸 (通常は、ホイール) を持っているかどうかをチェックする例である。
' diMouse は、有効な DirectInputDevice オブジェクトである。 Dim WheelAvailable As Boolean Dim dicaps as DIDEVCAPS Call diDev.GetCapabilities(dicaps) WheelAvailable = ((dicaps.lFlags And DIDC_ATTACHED) _ And (dicaps.lAxes > 2))
あるボタンまたは軸が存在するかどうかをチェックするもう 1 つの方法は、そのオブジェクトに対して DirectInputDevice8.GetObjectInfo を呼び出すことである。その呼び出しに対し DIERR_NOTFOUND が返ってきた場合、オブジェクトは存在しない。以下のコードでは、第 3 軸ではないにしても z 軸が存在するかどうかを判断する。
Dim didoi As DirectInputDeviceObjectInstance On Error GoTo NOTFOUND Set didoi = diDev.GetObjectInfo(DIMOFS_Z, DIPH_BYOFFSET) On Error GoTo 0 . . . NOTFOUND: If Err.Number = DIERR_NOTFOUND Then MsgBox "No z-axis found." End If