Problème pour récupérer la position de la souris en permanance [Résolu]

Signaler
Messages postés
8
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
30 mars 2006
-
Messages postés
8
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
30 mars 2006
-
Bonjour,

J'ai un problème. Je programme en MFC sous VS.net. J'ai une fenêtre CDialog et je voudrai récupérer en permanence la position du pointeur.
J'arrive à obtenir la position dès que j'appelle une fonction.
Comment créer une fonction qui est lue en permanence par le programme?

Sinon j'ai peut être une autre solution, récupérer la position du pointeur après un double clic sur bouton droit ou gauche. Mais comment lancer une fonction et comment détecter le double clic.

J'ai trouvé pas mal de fonction sur MSDN ou sur le net mais rien ne m'aide.

Si quelqu'un peu m'aider!!!!!!

2 réponses

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Plusieurs solutions possibles.

-Si ce n'est que le clic qui t'interresse, fait un hook sur la souris puis intercepte les boutons gauche et droit. Ainsi tu pourras apeller ta fonction par un Callback sur ton exe.

-Solution plus simple:
Tu crées un timer dans ton application, tu le regle par exemple sur 500ms, et tu appelles l'API GetCursorPos pour récuperer les coordonnées de la souris.
Regarde dans mes codes tu auras un exemple de timer.

Shell
Messages postés
8
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
30 mars 2006

Merci. Je viens de trouver une solution dans un exemple visual. Pour info: cf sample autoclik

J'ai suivi la démarche suivante:

dans fichier cpp:


BEGIN_MESSAGE_MAP(CCampagne, CDialog)
ON_WM_LBUTTONDOWN()

END_MESSAGE_MAP()


void CCampagne::OnLButtonDown(UINT nFlags, CPoint point)


{


DWORD dx=0;


DWORD dy=0;


POINT pos;


GetCursorPos(&pos);


x=pos.x;


y=pos.y;


X.Format("%d",(
int)x);


m_RED.SetWindowText(X); // Variable de la zone d'affichage


Y.Format("%d",(
int)y);


m_GREEN.SetWindowText(Y); // Variable de la zone d'affichage


}

Dans le fichier .h


protected:


afx_msg
void CCampagne::OnLButtonDown(UINT nFlags, CPoint point);

////////////////////////////////

Voilà.

Merci à toi pour ta réponse.