notJustCode.it
 
\\ Home : Articoli
DirectInput - Mouse
Di RobyDx (del 09/08/2007 @ 11:10:47, in DirectX9, linkato 2632 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#

Articolo Articolo  Storico Storico Stampa Stampa
I commenti sono disabilitati.
"Se tutto deve rimanere com'è, è necessario che tutto cambi"

Giuseppe Tomasi di Lampedusa, Il gattopardo


Cerca per parola chiave
 

Titolo
Articoli (4)
C++ (4)
Direct3D10 (30)
Direct3D11 (20)
DirectX9 (82)
DotNet (10)
English (9)
FanGames (22)
ManagedDX11 (2)
Materiale Utile (4)
News (39)
Shader Library (12)
SharpDX (1)
Software (25)
Tecnologia (19)
Varie (9)

Gli interventi più cliccati

Ultimi commenti:
If you wish to retai...
23/05/2013 @ 13:07:45
Di chanel outlet
You deficit of self-...
23/05/2013 @ 13:07:13
Di cartier watches uk
Reinforce your own l...
23/05/2013 @ 13:06:37
Di replica watches
Whenever you"re shiv...
23/05/2013 @ 13:06:11
Di swiss replica watches
It's likely you have...
23/05/2013 @ 13:05:02
Di chanel handbags
Cheap automobile ins...
23/05/2013 @ 13:04:28
Di replica watches

Titolo
Con quale tecnologia state realizzando o avete intenzione di realizzare i vostri progetti?

 DirectX11
 DirectX10
 DirectX9
 XNA
 DirectX8 o Precedenti
 OpenGL
 Motori grafici già pronti
 Altro

Titolo
Umorismo (17)

Le fotografie più cliccate



Ci sono 38 persone collegate
Sono state visualizzate  pagine

04/12/2021 @ 14:13:18
script eseguito in 40 ms