\\ Home : Articoli : Stampa
DirectInput - Mouse
Di RobyDx (del 09/08/2007 @ 11:10:47, in DirectX9, linkato 2754 volte)

Come per la tastiera anche per il mouse DirectInput rappresenta la migliore soluzione soprattutto per la velocità. Tuttavia, a seconda di quello che dovete fare, non tutti useranno questo tipo di controllo. Perchè? Il motivo è che Direct Input non restituisce la posizione in cui si trova lo schermo ma il numero di pixel di cui si è spostata la freccia in una direzione. La cosa è ottima per i Pc dato che la maggior parte dei giochi hanno controlli Mouse e Tastiera ma per alcuni programmi può essere più semplice da usare il sistema standard di VB (o meglio ancora un unione tra i due). Come per la tastiera è necessaria la creazione di un device di controllo.

Public mouse As Device
mouse = New DirectInput.Device(SystemGuid.Mouse)

Come vedete è identico alla tastiera ma è necessario passargli la guida del mouse
I settaggi sono gli stessi: per la modalità background

mouse.SetCooperativeLevel(fhWnd, CooperativeLevelFlags.Foreground Or CooperativeLevelFlags.Exclusive)

mentre per la background (quella consigliata)

mouse.SetCooperativeLevel(fhWnd, CooperativeLevelFlags.Background Or CooperativeLevelFlags.NonExclusive)

Ricordate che fhwnd è un control che deve essere posto uguale al form. Ora settiamo il tipo di dati e attiviamo il device

mouse.SetDataFormat(DeviceDataFormat.Mouse)
mouse.Acquire()

Semplicissimo. Ora leggiamo i dati.
Per leggere i dati è necessario un oggetto

Dim tasti As DirectInput.MouseState

per leggere i dati dal mouse, a differenza della tastiera, occorre usare

tasti=mouse.CurrentMouseState

Ora tasti contiene la situazione in quell'istante
I dati da tasti si leggono così
tasti.x e tasti.y : indicano il numero di pixel di cui si è spostato il mouse dall'ultimo controllo
tasti.z : questo si riferisce alla rotellina del mouse se presente
tasti.GetMouseButtons(n) : riporta un valore che indica se il tasto numero n è premuto. Se 0 il tasto non è premuto, se >0 (in genere 128) il tasto è premuto. Il tasto sinistro del mouse è il numero 0, il destro 1 e quello centrale 2. I numeri proseguono per mouse a più tasti.


Vi lascio gli esempi:

Esempio VB.Net

Esempio C#