Tom's Guide > Forum > Programmation > [MFC] probleme de detection de fenetre

[MFC] probleme de detection de fenetre

Forum Programmation : [MFC] probleme de detection de fenetre

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

salut, j'ai cree une tool tip qui s'affiche des que je deplace ma souris, le probleme ,c'est qu'elle reste afficher si je sort ma souris de la fenetre.

quelqu'un pourrait me dire comment je pourrait me dire comment je pourrais la faire disparaitre lorsque ma souris sort de la fenetre.

pour info, ma view est du tip scroll et je travaille sous visualC++ 6.0

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

s'il vous plait qulqu'un pourrait me repondre

Répondre à jiraya43

Dans CWnd, tu a la méthode CWnd::OnCaptureChanged(CWnd* pWnd) qui est appelé lorsqu'un élément perd le focus de la souris.
Si tu veux tester pour la fenetre, il te suffit de vérifier que la paramètre est le handle la fenêtre:

Code :
  1. void TaClasseFenetre::OnCaptureChanged( CWnd* pWnd )
  2. {
  3.   // On vérifie que c'est la fenetre qui perd le focus et pas un sous-élément
  4.   if( pWnd == this )
  5.   {
  6.       // Ici, pointeur de souris vient de sortir de la fenetre
  7.   }
  8. }



Sinon, tu peux aussi utiliser directement le message WM_CAPTURECHANGED (ça revient au même).

Répondre à CRicky

ok merci, mais je ne sais pas trop comment on utilise un message.
quelqu'un pourrait me l'expliquer s'il vous plait?

Répondre à jiraya43

Il te faut le récupérer avec la boucle des message de ta fenêtre, mais tu as une méthode MFC qui fait tout ce qu'il y a à faire.
utilise le OnCaptureChanged() que tu n'as qu'a redéfinir dans ta classe CWnd, c'est bien plus simple !

Répondre à CRicky

salut, j'ai regarder mes classe, mais j'ai pas trouver la classe CWnd.J'ai une classe view, app et doc. En plus, je n'est pas la fonction dont tu me parle dans aucune de ces classes. est que tu pourrais me dire comment faire, s'il te plait?

Répondre à jiraya43

Regarde la déclaration de ta classe view, tu vois que ta classe hérite de CView. Regarde la documentation de CView et tu remarquera que CView hérite de CWnd. Donc au final ta classe view est aussi une classe CWnd. Tu peux donc considérer ta classe view comme CWnd (c'est ta fenêtre graphique).
C'est donc dans cette classe que tu redéfinies toutes les fonctions onQuelqueChose() qui seront appelées au déclenchement d'évènements correspondants.

Répondre à CRicky

merci, mais j'ai essayer de mettre une afxmessagebox a l'interieur de la boucle dans la fonction que tu m'a passer pour voir, si ca marche, mais lorsque je fais sortir ma souris de la fenetre, il ne se passe rien.

je sais pas si j'oublie de faire quelque chose,voici le code que je met:

Code :
  1. void CImagerie_medicaleView::OnCaptureChanged(CWnd *pWnd)
  2. {
  3.     // TODO: Add your message handler code here
  4.   if( pWnd == this )
  5.   {
  6.     AfxMessageBox("ca marche" );
  7.   }
  8.     CScrollView::OnCaptureChanged(pWnd);
  9. }



est ce que j'oublie quelque chose? :-(

Répondre à jiraya43

ouais je me suis planté. Je crois que c'est plutôt pour prendre/relâcher le contrôle de la souris à l'extérieur de la fenêtre.
Essaie plutôt onMouseLeave():
http://www.microsoft.com/msj/1298/c/c1298.aspx

Répondre à CRicky

merci pour ton aide

Répondre à jiraya43
Tom's Guide > Forum > Programmation > [MFC] probleme de detection de fenetre
Aller à :

Il y a 839 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens