[MFC] realisation d'info bulle
Forum Programmation : [MFC] realisation d'info bulle
salut, je realise une application MFC et je voudrais que lorsque je laisse ma souris plus de 3 secondes sur le même pixel, une infos bulle apparaissent est affiche les information que je desire. je sais qu'il faut utiliser la classe CToolTip mais je ne sais pas comment l'utiliser?
quelqu'un pourrait m'aider?
MFC?
Microsoft Foundation Classes, c'est une API windows en C++
est ce que quelq'un pourrait me donner une reponse, c'est tres important!!
je recherchais le projet dans lequel je m'étais amusé avec.
Les tooltip sont assez pénible à utiliser si tu n'utilises pas celui implémenté par défaut pour les objets les gérants déjà.
Alors voici comment j'ai fait pour ajouter un tooltip qui m'affiche les coordonnées d'un point à l'intérieur d'une frame de type CView.
Dans ton .h, rajoute deux membres et une méthode:
Code :
|
Dans ton .cpp, ajoute la gestion du message suivant :
Code :
|
Ajoute la méthode de cet évènement :
Code :
|
Dans le code d'initialisation de ta fenêtre, ajoute la création du tooltip :
Code :
|
Par la suite, il suffit de faire ça n'importe où dans ton code pour l'afficher :
Code :
|
Tu peux jouer sur les paramètres de délai, je te laisse adapté ce bout de code.
merci pour ta reponse, mais est ce que cela change beaucoup de chose pour une frame de type CScrollView?
Je ne pense pas puisque CScrollView dérive de la classe CView.
Tu as simplement la prise en charge automatique du scrolling en plus, mais rien en moins.
j'ai essayer ton code et je ne comprend pas tout, est ce que tu pourrais un peu m'expliquer les parametre de la des fonctions suivantes: sprintf et sendMessage.
de plus pour essayer j'ai mis le code dans on draw est l'info bulle n'apparrait pas vers le pointeur de la souris mais en haut a gauche de mon ecran!!
Qu'est ce que tu ne comprends pas pour le sprintf ??? La fonction où ce qu'elle vient faire ici??
le sendMessage permet d'envoyer directement des messages à tous les éléments qui sont capables dans recevoir ...
Cette méthode prend toujours 3 paramètres :
- le message à envoyer
- un WPARAM
- un LPARAM
Les 2 derniers paramètres sont dépendants du message et je te renvois à la doc pour chacun des messages.
Si l'on prend le message :
tool->SendMessage(TTM_TRACKPOSITION,0,(LPARAM)MAKELPARAM(position x,position y));
tu envois le message TTM_TRACKPOSITION au tooltip "tool".
Si tu prends la doc tu verra que le WPARAM doit être à 0, et que le LPARAM doit être (LPARAM)(DWORD) MAKELONG(xPos, yPos).
xPos et yPos doivent également être dans les coordonées de l'écran (cf doc).
Par contre je te déconseille de mettre l'appel à ce message dans la fonction draw car ce n'est pas ce que tu souhaites faire. Tu souhaites affiché quelque chose quand ta souris s'arrête 3 secondes sur un pixel, il faut donc mettre ce message dans la méthode de gestion du mouvement de la souris
nMouseMove.
D'ailleurs cette méthode te donne la position de la souris à l'intérieur de ta fenêtre, il faut donc utiliser la méthode ClientToScreen pour transformé les coordonnées.
Voilà à quoi ta fonction doit ressembler (pour affiché les coordonnées par exemple):
Code :
|
merci pour ton aide ataofeal c'a ma bien aider
salut, j'ai encore quelque probleme avec les info bulle, deja, l'info bulle apparait des que je pointe sur le pixel, sans aucun delai(j'ai pourtant essayer de changer les parametre, mais cela ne change rien).
De plus au bout d'un moment les infos bulles reste afficher trop longtemps, et on vois une longe traine d'info bulle si je bouge ma souris. enfin pour finir si j'ouvre une boite de dialogue pour realiser un traitement sur l'image, une fois que je revient sur la fenetre avec mon image, mon info bulle ne reapparait plus. j'ai bien essayer de trouver des solution, mais cela ne change rien.
Il y a 2833 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

okinou