Tastatur

 

Was nützt die tollste Grafik, wenn der Benutzter nicht mit dem Programm interagieren kann? Zeit ein paar Eingaben zu machen. DirectX bietet hierzu eine eigene Komponente mit dem Namen "DirectInput"! In diesem Tutorial erlkläre ich die Programmierung des wohl gänigsten aller Eingabegeräte, die Tastatur. Die Programmierung ist eigentlich ziemlich einfach, man erstellt ein DirectInput-Objekt und ein DirectInputDevice-Objekt für die Tastatur. Immer wenn man eine Eingabe von der Tastatur abfangen will, wird eine Prozedur vom DIDevice (Device engl. = Gerät) aufgerufen die die aktuellen, gedrückte(n) Taste(n) in eine sogennante KeyState Variable abspeichert. Die Rückgabewerte die DIDevice zurückliefert, vergleicht man dann mit den Tasten-Konstanten. Eine Liste der Konstanten findet Iht hier: KeyState Konstanten

Das ganze hört sich schwerer an als es ist, hier nun ein wenig Code:

Public DInput As DirectInput 'DirectInput-Objekt

Public DIDevice As DirectInputDevice 'DirectInputDevice

Public KeyState As DIKEYBOARDSTATE 'Status der Tastatur (welche Tastegedrückt wird)

Set DInput = DX.DirectInputCreate()

Set DIDevice = DInput.CreateDevice("GUID_SysKeyboard")

DIDevice.SetCommonDataFormat DIFORMAT_KEYBOARD

'Setzt das Cooperative Level DISCL_EXCLUSIVE = Nur das Programm empfängt die Tastatureingaben

'Wenn Ihr im Fentermodus abreitet dann bitte: DISCL_BACKGROUND Or DISCL_NONEXCLUSIVE

DIDevice.SetCooperativeLevel frmMain.hWnd, DISCL_FOREGROUND Or DISCL_EXCLUSIVE

DIDevice.Acquire

Nach dem nun DirectInput eingerichtet ist, kommt der Code der die Tastatureingaben abfragt. Hier findet Ihr eine vollständige Liste der Konstanten.

DIDevice.GetDeviceStateKeyboard KeyState 'Den Tastaturstatus inKeyState ablegen

If KeyState.Key(DIK_RIGHT) <> 0 Then

'Pfeiltaste nach rechts

End If

If KeyState.Key(DIK_LEFT) <> 0 Then

'Pfeiltaste nach links

End If

If KeyState.Key(DIK_UP) <> 0 Then

'Pfeiltaste nach oben

End If

If KeyState.Key(DIK_DOWN) <> 0 Then

'Pfeiltaste nach unten

End If

So in etwa müsste dann der Code in der Hauptschleife aussehen. Dies ist ein Gerüst, dass die Richtungstasten überprüft, die Funktionen die für die jeweilige Taste ausgeführt werden stehen dann da, wo die Kommentare jetzt stehen ;). Nun müsstet Ihr auch die Tastaturereignisse abfangen können, wenn nicht dann mailt mir bitte.

 

Druckbare Version


Autor: Alexander Ney / Mehr Tutorials auf www.vb-overkill.de.vu