2008-10-31 3 views
1

J'ai un CMFCRibbonStatusBar dans mon ordinateur central auquel j'ajoute un CMFCRibbonButtonsGroup qui a encore CMFCRibbonButton. Ce bouton a le même ID qu'une entrée de menu.Comment afficher une info-bulle pour un CMFCRibbonButton dans la barre d'état?

Création du bouton se fait comme suit:

CMFCRibbonButtonsGroup* pBGroup = new CMFCRibbonButtonsGroup(); 

CMFCToolBarImages images; 
images.SetImageSize(CSize(32, 16)); // Non-square bitmaps 
if(images.Load(IDB_STATUSBAR_IMAGES)) 
{ 
    pBGroup->SetImages(&images, NULL, NULL); 
} 

m_pStatusButton = new CMFCRibbonButton(ID_STATUS_SHOWSTATUS, 
             _T(""), 
             IMAGEINDEX_DEFAULTSTATUS); 

pBGroup->AddButton(m_pStatusButton); 

m_wndStatusBar.AddExtendedElement(pBGroup, _T("")); 

Je veux utiliser ce bouton comme un indicateur d'état.

Je veux afficher une infobulle dans les deux cas suivants:

  • lorsque les changements d'état et
  • lorsque l'utilisateur déplace la souris sur le bouton.

Je n'ai aucune idée de comment commencer en premier lieu. J'ai regardé les exemples de projets ToolTipDemo et DlgToolTips, mais je n'ai pas compris comment le faire car tout ce qu'ils font est d'afficher les info-bulles pour les éléments de la barre d'outils ou les boutons de dialogue (CWnd -dérivé au lieu de CMFCRibbonButton). Si vous êtes familier avec le projet exemple ToolTipDemo: Comme il semble y avoir plusieurs façons de faire, je préférerais que l'info-bulle ressemble à l'info-bulle "Extended Visual Manager" comme shown in this screenshot.

Merci!

Répondre

2

Je ne pense pas qu'il soit possible d'afficher l'info-bulle sans que le curseur de la souris soit sur le contrôle. Tout est fait automatiquement.

Toutefois, si vous voulez avoir une belle infobulle regarder comme dans la capture d'écran, vous devez appeler SetToolTipText et SetDescription, comme ceci:

CMFCRibbonButton* pBtn = new CMFCRibbonButton(12345, _T(""), 1); 
pBtn->SetToolTipText("This is the bold Title"); 
pBtn->SetDescription("This is the not-so-bold Description"); 
pGroup->AddButton(pBtn); 
0

J'utilise CMFCRibbonButton commandes dans un CMFCRibbonButtonGroup, qui est ajouté à le CMFCRibbonStatusBar. Prenez note du quatrième paramètre dans le constructeur CMFCRibbonButton(), bAlwaysShowDescription, car cela semble affecter le comportement selon si SetDescription() a été appelé. Plus précisément, si SetDescription() n'a pas été appelée, cela n'a pas d'importance si bAlwaysShowDescription est VRAI ou FAUX - l'info-bulle est affichée (comme je l'attendais). Si SetDescription() est défini et bAlwaysShowDescription est FAUX, en survolant le bouton, l'info-bulle s'affiche avec la description ci-dessous.

Ce qui semble contre-intuitif étant donné le nom de ce paramètre bAlwaysShowDescription, est que lorsque cela est vrai et SetDescription() est réglé, la pointe NI outil, ni la description apparaissent. Je me demande si cela est lié à ce poste: https://connect.microsoft.com/VisualStudio/feedback/details/399646/cmfcribbonbutton-wont-show-tooltip-if-balwaysshowdescription-1

Hope this helps et vous pouvez réaliser ce que vous avez besoin avec les différentes combinaisons de paramètres bAlwaysShowDescription et si SetDescription() est réglé.

Questions connexes