DirectInput - CooperativeLevel und Datenformat  

Der CooperativeLevel legt fest, wie ein Eingabegerät z.B. die Tastatur, mit anderen Anwendungen geteilt wird. Dies ist wichtig, denn ein falsch eingesetzter CooperativeLevel kann zu Fehlermeldungen oder eigenartigem Verhalten der Anwendung führen. So ist z.B. ein exklusiver Zugriff auf die Tastatur nicht erlaubt.
 

Folgende Cooperative Level sind möglich:

DISCL_NONEXCLUSIVE Die Anwendung erhält keinen exklusiven Zugriff auf das Gerät (zwingend erforderlich für die Tastatur)
DISCL_EXCLUSIVE Die Anwendungen erhält den exklusiven Zugriff auf das Gerät, keine andere Anwendung kann somit darauf zugreifen. (zwingend erforderlich für Force Feedback)
DISCL_FOREGROUND Die Anwendung bekommt nur dann Daten, wenn sie im Vordergrund ist.
DISCL_BACKGROUND Die Anwendung bekommt immer Daten, egal ob sie im Vorder- oder Hintergrund ist.

 
Folgende Kombinationen sind zulässig für die entsprechenden Eingabegeräte:

DISCL_NONEXCLUSIVE Or
DISCL_BACKGROUND

alle Eingabegeräte ohne Force Feedback (Default-Einstellung)

DISCL_NONEXCLUSIVE Or
DISCL_FOREGROUND

alle Eingabegeräte ohne Force Feedback

DISCL_EXCLUSIVE Or
DISCL_FOREGROUND

alle Eingabegeräte außer der Tastatur

DISCL_EXCLUSIVE Or
DISCL_BACKGROUND

Joysticks und Eingabegeräte mit Force Feedback (nicht zulässig für Tastatur und Maus)

 
DirectInput unterdrückt alle Tastatureingaben außer [Strg+Alt+Del] und [Alt+Tab] wenn eine andere Anwendung den exklusiven Zugriff hat.
 

Das Datenformat

Wie bereits erwähnt ist DirectInput mit einer offenen Schnittstelle ausgestattet um alle zukünftigen Eingabegeräte unterstützen zu können. Zum Glück gibt es aber auch Standard-Formate mit denen die normalen Eingabegeräte angesprochen werden können.

Folgende Standard-Formate sind möglich:

DIFORMAT_KEYBOARD

Tastatur; für jede Taste ein Byte

DIFORMAT_MOUSE

Maus; vier Tasten, drei Achsen

DIFORMAT_JOYSTICK

Joystick; bis zu 32 Knöpfe, bis zu 6 Achsen, bis zu 2 Schieberegler und bis zu 4 Richtungsschalter

DIFORMAT_JOYSTICK2

Datenformat für erweiterte Joysticks

 
Über das DirectInputDevice-Objekt stehen zwei Funktionen zur Verfügung, die DirectInput mitteilen, welches Datenformat verwendet werden kann. SetCommonDataFormat() und SetDataFormat()
 

Standard-Datenformat

Mit der Funktion SetCommonDataFormat (format As CONST_DICOMMONDATAFORMATS) wird das gewünschte Standard-Format festgelegt.
 
format
ist die Bezeichnung des Standard-Formats aus der o.a. Auflistung der Formate.
 
Es muss ein Datenformat gesetzt werden bevor auf ein Eingabegerät zugegriffen werden kann. Während auf ein Eingabegerät zugegriffen wird, kann das Datenformat nicht geändert werden.

 'Standard-Datenformat für die Tastatur
Set DIDEVT = DI.CreateDevice("GUID_SysKeyboard")
DIDEVT.SetCommonDataFormat DIFORMAT_KEYBOARD
DIDEVT.SetCooperativeLevel Me.hWnd, DISCL_BACKGROUND Or_
  DISCL_NONEXCLUSIVE

  'Standard-Datenformat für die Maus
Set DIDEVM = DI.CreateDevice("GUID_SysMouse")
DIDEVM.SetCommonDataFormat DIFORMAT_MOUSE
DIDEVM.SetCooperativeLevel Me.hWnd, DISCL_FOREGROUND Or_
  DISCL_EXCLUSIVE

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB-/VBA-Forum | DirectX-Forum | VB.Net | .Net-Forum | Foren-Archiv | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report

Letzte Aktualisierung, Freitag, 3. Mai 2002