Position absolue de la souris avec DirectX 9 [Résolu]

oualla_mohamed 8 Messages postés jeudi 21 octobre 2004Date d'inscription 16 décembre 2008 Dernière intervention - 27 mai 2006 à 12:41 - Dernière réponse : Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention
- 27 mai 2006 à 20:41
Salut à tous,
Je suis entrain de m'initier à la programmation directx. Lorsque je capture la position souris :
 a) j'ai le sens du déplacement (mMouse.Properties.AxisModeAbsolute =
false)
 b) une position elevée (mMouse.Properties.AxisModeAbsolute =
true)
J'aimerais savoir comment avoir la position absolue en pixels par rapport à la fenêtre.

//using
using DirectInput = Microsoft.DirectX.DirectInput;

//création du device
mMouse =
new DirectInput.
Device(SystemGuid.Mouse);

mMouse.Properties.AxisModeAbsolute =
true;

//acquisition de l'état de la souris
MouseState state = mMouse.CurrentMouseState;

byte[] buttons = state.GetMouseButtons();

merci à tous
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
scaryman 492 Messages postés vendredi 30 janvier 2004Date d'inscription 16 mai 2007 Dernière intervention - 27 mai 2006 à 14:12
3
Merci
Salut
Ben le plus simple, c'est de faire comme ça
POINT curs;
GetCursorPos(&curs);
Si tu veux vraiment le faire en directx, il y a l'attribut Location de MouseEventArgs

A++

Merci scaryman 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 118 internautes ce mois-ci

Commenter la réponse de scaryman
Meilleure réponse
MorpionMx 3489 Messages postés lundi 16 octobre 2000Date d'inscription 30 octobre 2008 Dernière intervention - 27 mai 2006 à 14:22
3
Merci
les propriétés state.X et state.Y (de ton instance de CurrentMouseState donc) te donneront les coordonées de ta souris.

Mx
MVP C# 

Merci MorpionMx 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 118 internautes ce mois-ci

Commenter la réponse de MorpionMx
Meilleure réponse
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 27 mai 2006 à 20:41
3
Merci
Salut, il ne faut pas confondre le curseur Windows et la souris, le cursor est un sprite affiché par Windows en fonction des déplacements de la souris.. et la souris c'est un périphérique aux coordonnées relatives, elle renvoie le nombre d'unités ou de pixels depuis le dernier déplacement..  DirectX lui travaille uniquement au niveau de la souris, ( au niveau du materiel ) il ne connait pas le curseur de Windows. Même si tu passes en mode absolu ( AxisModeAbsolute ) c'est seulement LE TOTAL des déplacements relatifs qui est ajouté à une valeur de départ qui n'est pas 0 mais par exemple 1800000. ça donne des résultats comme 1800001, 1800008, etc..

En fait les programmeurs DirectX masquent le curseur Windows et utilisent un sprite ( une image ) pour afficher leur propre curseur, ce qui permet de connaitre exactement sa postion à l'écran puisque c'est le développeur qui le place ou il veut..

Il n'est pas possible de prendre la valeur de départ du curseur Windows et de lui ajouter les valeurs obtenues par DirectX pour espérer obtenir sa position, car Windows déplace le curseur avec des réglages utilisateurs prédéfinis telle que la fluidité etc..

Tiens un exemple d'une documentation que j'avais fait pour un librarie avec DirectInput :

Une coordonnée absolue est le total des déplacements depuis que le périphérique a été acquis (Acquire). La valeur initiale d'une coordonnée absolue n'est pas zéro mais une valeur choisie arbitrairement. Une coordonnée absolue est significative uniquement par rapport à une autre valeur absolue.

Merci Lutinore 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 118 internautes ce mois-ci

Commenter la réponse de Lutinore

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.