salut, pour un programme que je realise, je souhaite faire apparaitre une info bulle lorsque j'enfonce le click droit et ensuite, la faire disparaitre si je relache le click droit.
J'ai bien reussi a faire apparaitre l'info bulle, mais lorsque je relache le bouton droit, elle ne disparait pas, alors que j'utilise la fonction DelTool.
est ce que quelqu'un pourrait m'aider a resoudre mon probleme.
je vous donne mon code pour l'affichage de l'info bulle pour voir si vous trouver un probleme.
dans mon view.h
dans le constructeur de la classe View:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CToolTipCtrl* tool ; //On definie une variable pour l'info bulle TOOLINFO ti; //ti recevra les caracteristiques du message de l'info bulle
dans OnInitialUpdate():
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 text=new char[256]; //la taille max. du message qui sera affiché dans ta tooltip tool=new CToolTipCtrl();
dans la fonction OnRButtonDown:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 tool->Create(this,TTS_ALWAYSTIP|TTF_TRACK|TTF_ABSOLUTE|TTF_IDISHWND ); //taille de la structure en bytes ti.cbSize = sizeof(TOOLINFO); //Commande l'affichage de la tooltip ti.uFlags = TTF_IDISHWND | TTF_TRACK | TTF_ABSOLUTE; //Correspond a l'handle de la fenetre ti.hwnd = this->m_hWnd; ti.uId = (UINT)AfxGetMainWnd()->m_hWnd; ti.hinst = AfxGetInstanceHandle(); ti.lpszText = LPSTR_TEXTCALLBACK; ti.rect.left = ti.rect.top = ti.rect.bottom = ti.rect.right = 0;
dans la fonction OnRButtonUp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 //fonctions pour specifier les message windows tool->SendMessage(TTM_ADDTOOL,0,(LPARAM)&ti); tool->SendMessage(TTM_TRACKACTIVATE,(WPARAM)true,(LPARAM)&ti); tool->SendMessage(TTM_SETMAXTIPWIDTH,0,(LPARAM)SHRT_MAX); tool->EnableTrackingToolTips(true); tool->EnableToolTips(true); //On active l'info bulle tool->Activate(true); //On affiche la'info bulle avec son texte sprintf(text,"ng=%d",ng); CPoint p=point; ClientToScreen(&p); tool->SendMessage(TTM_TRACKPOSITION,0,(LPARAM)MAKELPARAM(p.x+20,p.y+20)); //le +20 c'est à décaler l'affichage à côté du curseur et pas pile dessous
je ne vois pas l'erreur qui fait que mon info bulle ne disparraisent pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 tool->DelTool(this,0);
Est ce que quelqu'un saurait?
Partager