2011-11-08 3 views
1

J'essayais les infobulles CMFCButton et j'ai constaté que si j'appelais EnableFullText() les info-bulles ne s'affichent pas.Que fait CMFCButton :: EnableFullTextTooltip?

Voici un petit échantillon:

// In OnInitDialog() 
c_MyBtn.m_nFlatStyle = CMFCButton::BUTTONSTYLE_SEMIFLAT; 
c_MyBtn.SetMouseCursorHand(); 
c_MyBtn.EnableFullTextTooltip(); 
c_MyBtn.SetTooltip(_T("Some string")); 
c_MyBtn.Invalidate(); 

Alors, est-ce que la fonction de faire quelque chose? Les docs le disent "Spécifie s'il faut afficher le texte intégral d'une info-bulle dans une grande fenêtre d'info-bulle ou une version tronquée du texte dans une petite fenêtre d'info-bulle", mais la seule chose que je vois est que les info-bulles ne s'affichent pas. J'ai essayé de longues cordes et cordes avec des sauts de ligne, mais rien.

Quelqu'un connaît le but de cette fonction et comment l'utiliser? J'utilise Visual Studio 2008 SP1.

Répondre

3

La chose merveilleuse à propos de MFC est que Microsoft vous donne la source. S'il y a une question, regardez le code.

En regardant EnableFullTextTooltip, tout ce qu'il fait est de définir un couple de drapeaux booléens. L'important est m_bDelayFullTextTooltipSet. Ce drapeau est vérifié dans la fonction OnDraw. Le texte de l'info-bulle est défini avec SetTooltip: si le texte du bouton complet correspond au bouton lui-même, il s'appelle avec NULL, sinon il s'appelle avec le texte du bouton.

Il semble que l'intention de cette fonction est que l'info-bulle affiche le texte qui aurait dû être dessiné sur le bouton lui-même lorsque le bouton est trop petit. Si ce n'est pas ce que vous voulez, évitez cette fonction car elle remplacera l'info-bulle que vous avez définie.

+0

Oui, j'avais regardé, et je suis arrivé à la même conclusion, mais je n'ai pas réussi à le faire fonctionner non plus. Mais maintenant, après une nuit de sommeil, je l'ai fait fonctionner au premier essai. Et oui, il dessine toute la légende dans une info-bulle si elle ne rentre pas dans le bouton. Mais ce n'est pas ce que les docs disent. C'est l'une des choses horribles à propos de MFC, il a souvent une documentation terrible, parfois carrément trompeuse. – MikMik