Quelle fonction utiliser pour récupérer les coordonnées de la souris?

Quelle fonction utiliser pour récupérer les coordonnées de la souris? - C++ - Programmation

Marsh Posté le 24-05-2004 à 11:51:01    

Bonjour tout le monde,
J'ai un ch'tit problème pas très compliqué pour un développeur averti (mais je n'en suis pas un...  :cry: ) : Voilà, j'ai une image (bmp), je clique qqpart sur cette image, et je voudrais récupérer les coordonnées du point sur lequel j'ai cliqué, coordonnées en pixels de préférence. Quelle fonction faut-il que j'utilise pour cela? Merci d'avance.

Reply

Marsh Posté le 24-05-2004 à 11:51:01   

Reply

Marsh Posté le 24-05-2004 à 12:10:23    

En C, j'utilise l'API GetCursorPos(). Suite au message WM_LBUTTONDOWN (bouton gauche appuyé).
Cf http://msdn.microsoft.com/library/ [...] sorPos.asp
Les coordonnées sont celles de l'écran. Si l'image est sur une feuille, faut tenir compte de sa position (y a API ScreenToClient(), et ClientToScreen() pour faire calculs sur position de feuilles)
 
En C++, doit y avoir "mieux".

Reply

Marsh Posté le 24-05-2004 à 13:56:08    

Carbon_14 a écrit :

j'utilise l'API GetCursorPos(). Suite au message WM_LBUTTONDOWN


La position de la souris n'est pas contenue dans le wparam ou dans le lparam au moment ou tu recois le message?

Reply

Marsh Posté le 24-05-2004 à 14:03:08    

Il semblerait : D'après Krosoft :
Remarks
 
Use the following code to obtain the horizontal and vertical position:
 
xPos = GET_X_LPARAM(lParam);  
yPos = GET_Y_LPARAM(lParam);  
 
Va falloir que je "vire" tous mes GetCursorPos() de mes programmes....
Il sert surtout quand on ne clique pas (et sous Windows 3.11 car GET_X_LPARAM n'existait pas encore, on peut ss dte écrire une macro).


Message édité par Carbon_14 le 24-05-2004 à 14:04:33
Reply

Marsh Posté le 24-05-2004 à 14:40:31    

Ok merci, ca a l'air de tourner avec GetCursorPos, je récupère les coordonnées du point cliqué et je les stocke dans deux variables publiques m_iCoordX et m_iCoordY.  
Comment est-ce que je peux accéder au contenu de ces variables depuis n'importe quelle autre fonction de mon appli?? Pour le moment, j'ai un message d'erreur : error C2065: 'm_iCoordY' : undeclared identifier...  :??:

Reply

Marsh Posté le 24-05-2004 à 15:07:15    

Avec des noms pareils, m_iCoordX et m_iCOordY m'ont tout l'air de faire partie d'une classe... Il te faut un pointeur ou une référence vers ton objet.

Reply

Marsh Posté le 24-05-2004 à 15:19:30    

En fait j'ai un truc comme ca :

Code :
  1. void CEssai3View::OnLButtonDown(UINT nFlags, CPoint point)
  2. {
  3. GetCursorPos (&point);
  4. m_iCoordX = point.x;
  5. m_iCoordY = point.y;
  6. CView::OnLButtonDown(nFlags, point);
  7. }


Et je voudrais pouvoir lire le contenu de m_iCoordX et m_iCoordY depuis n'importe quelle autre fonction de mon application. Ces deux variables sont déclarées comme publiques mais quand je les utilise, j'obtiens un message d'erreur du genre la variable n'est pas déclarée...  :??:

Reply

Marsh Posté le 24-05-2004 à 16:10:54    

Bon, encore un....
Les variables m_iCoordX/Y sont membres de ta classe CEssai3View...  
Qu'est-ce que tu appelles "n'importe quelle autre fonction"? m_iCoordX/Y n'ont rien a voir avec des variables globales.

Reply

Marsh Posté le 25-05-2004 à 13:17:03    

Non effectivement, petit coup de barre :). J'ai résolu le problème, thx.

Reply

Marsh Posté le 26-05-2004 à 19:50:24    

A mon aivs le GetCursorPos n'est pas une bonne solution car la souris peut avoir bougé entre l'instant ou tu cliques et celui ou tu fais effectivement le GetCursorPos
La solution de Carbon 14 est la bonne

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed