Mouvement de la souris au-dessus d'un contrôle CStatic [Résolu] - C++ - Programmation
Marsh Posté le 16-07-2004 à 15:56:16
Ce qu'il est possible de faire dans un prog MFC c'est de rajouter avec ClassWizard l'évènement WM_MOUSEMOVE à la fenetre. La fonction OnMouseMove est alors ajoutée au code de la fenetre (elle est appelée automatiquement). Un des parametre permet de vérifier le statut des boutons de la souris. Mais le second indique la position de la souris dans la fenetre sous la forme CPoint. Cela suppose quand meme de connaitre la position de ton controle.
Marsh Posté le 16-07-2004 à 16:50:55
Tu ajoutes un handler sur WM_MOUSEMOVE. Quand tu es appele tu fais un GetCapture. Ceci t'assurera de recevoir des WM_MOUSEMOVE meme quand la souris sortira de ton controle. Du coup a chaque WM_MOUSEMOVE il faut que tu verifies que le curseur est bien dans ton controle: pour ca tu utilises le CPoint que Windows te passe. Ce CPoint est en coordonnes client de ton controle donc il faut que pt.x et pt.y soient positifs et que pt.x soit inferieur a la largeur de ton controle et pt.y a la hauteur. Si le curseur est en dehors du controle alors tu fais un ReleaseCapture pour ne plus recevoir de notifications WM_MOUSEMOVE inutiles.
Marsh Posté le 16-07-2004 à 17:26:49
Merci pour l'aide mais c'est bon j'ai trouvé une solution grâce aux exemples qu'ion peut trouver sur www.codeproject.com
Si vous voulez savoir comment changer le curseur lorsqu'il passe au-dessus d'un contrôle CStatic puis ouvrir une page internet en cliquant sur ce contrôle, voilà le code :
HyperLink.h
Code :
|
HyperLink.cpp
Code :
|
-----Utilisation dans la Vue de type CFormView-----
CMyFormView.h : données membres à rajouter
Code :
|
Rajouter la routine DDX dans DoDataExchange()
Code :
|
Initialisation du lien (dans le constructeur de la classe CMyFormView()
Code :
|
Marsh Posté le 15-07-2004 à 16:55:20
Bonjour, j'aimerais récupérer un message pour savoir si la souris est au-dessus d'un contrôle de type CStatic.
J'ai regardé dans l'aide et j'ai trouvé le message WM_MOUSEHOVER. Je ne sais pas si celui-ci est le bon et je ne sais pas comment l'intercepter.
Message édité par choupinou le 20-07-2004 à 13:06:04