[DirectX] Position de la souris.

Le côté programmation du développement d'un jeu vidéo.

Position de la souris.

Messagepar Percewyn » 19 Avr 2006, 03:49

En faisant quelque test avec DirectX, je me suis rendu compte que j'avais toujours utilisé DirectInput seulement pour les touches du clavier et jamais pour la souris.

En fait, mes tests marchent numéro un, mais je me suis vite aperçu qu'on ne peut pas avoir la position exact de la souris, mais seulement son déplacement (en tout cas, lorsqu'on la regarde avec le CurrentMouseState).

Alors j'imagine qu'il existe quelques astuces afin de calculer la position de la souris grâce à tout ses déplacements. J'ai essayé de modifier une variable x et une variable y à chaque déplacement de la souris, mais les valeurs que cela me donne me font peur un peu.

Alors j'espère recevoir de vos idées ou de vos astuces !

p.s : J'espère ne pas avoir fait trop de fautes de français, ce n'est pas mon fort.
Percewyn
Avatar de l’utilisateur
Percewyn
Hello World, I'm new !
 
Messages: 31
Inscription: 08 Mar 2006, 01:33

Messagepar Lenolian » 19 Avr 2006, 05:25

Si tu veut vraiment avoir la position absolue de la srouis, il faut le lui indiquer avant d'acquerir le device :

Code: Tout sélectionner
DIPROPDWORD dipdw;
    // the header
    dipdw.diph.dwSize       = sizeof(DIPROPDWORD);
    dipdw.diph.dwHeaderSize = sizeof(DIPROPHEADER);
    dipdw.diph.dwObj        = 0;
    dipdw.diph.dwHow        = DIPH_DEVICE;
    // the data
    dipdw.dwData            = DIPROPAXISMODE_ABS; // mode absolu pour la souris

hr = g_pMouse->SetProperty(DIPROPAXISMODE_ABS, &dipdw.diph);

if (FAILED(hr)) {
    return FALSE;
}


Pour la signifiaction des valeurs retournées en mode relatif, DirectX travaille directement avec le hardware. Il n'y donc pas de relation entre les déplacements fourni par DirectInput et les pixels ou les coordonnées de l'écran.
J'ai toujours raison, même quand j'ai tort car alors j'ai raison d'avoir tort.
Avatar de l’utilisateur
Lenolian
Hello World, I'm new !
 
Messages: 799
Inscription: 10 Avr 2005, 16:17
Localisation: Toulouse

Messagepar Loulou » 19 Avr 2006, 12:11

Sinon pas la peine de sortir DirectInput pour récupérer la position de la souris, tu peux aussi faire un bête GetCursorPos de l'API Windows.
Loulou
Hello World, I'm new !
 
Messages: 702
Inscription: 10 Avr 2005, 12:00

Messagepar Percewyn » 19 Avr 2006, 13:07

C'est déjà un début, j'ai essayer de placer la propriété du device pour avoir la position absolue de la souris avant de la faire acquérir, mais alors je n'obtiens que des 0 lorsque j'utilise le CurrentMouseState.

Je vais continuer les tests et vous redonnez de mes nouvelles :00000031:
Percewyn
Avatar de l’utilisateur
Percewyn
Hello World, I'm new !
 
Messages: 31
Inscription: 08 Mar 2006, 01:33

Messagepar bilaloch » 19 Avr 2006, 13:59

Utilise le GetCursorPos de Loulou.

Code: Tout sélectionner
POINT curs;
GetCursorPos(&curs);


Voila :) . "curs.x" contient la position "x" de la souris et "curs.y" la position "y".

BILALoch
bilaloch
Hello World, I'm new !
 
Messages: 40
Inscription: 13 Avr 2006, 10:41

Messagepar Percewyn » 19 Avr 2006, 15:09

Ok, c'est beaucoup plus facile avec le getCursorPos en effet. Alors problème réglée, j'arrive à trouver la position de la souris.

Merci également pour l'exemple de code BILALoch !
Percewyn
Avatar de l’utilisateur
Percewyn
Hello World, I'm new !
 
Messages: 31
Inscription: 08 Mar 2006, 01:33


Retourner vers Programmation

Qui est en ligne

Utilisateurs parcourant ce forum: Bing [Bot] et 27 invités

cron