Comment afficher une info-bulle pour un CMFCRibbonButton dans la barre d'état?
-
05-07-2019 - |
Question
J'ai un CMFCRibbonStatusBar
dans mon mainframe auquel j'ajoute un CMFCRibbonButtonsGroup
qui a encore un CMFCRibbonButton
. Ce bouton a le même identifiant qu'une entrée de menu.
La 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 souhaite utiliser ce bouton comme indicateur d'état.
Je souhaite afficher une info-bulle dans les deux cas suivants:
- quand le statut change et
- lorsque l'utilisateur déplace la souris sur le bouton.
Je ne sais pas comment commencer en premier. J'ai consulté les exemples de projets ToolTipDemo
et DlgToolTips
, mais je ne savais pas comment le faire, car ils se contentaient d'afficher des info-bulles pour les éléments de la barre d'outils ou les boutons de la boîte de dialogue (< code> CWnd - dérivé au lieu de CMFCRibbonButton
).
Si vous connaissez le projet exemple ToolTipDemo
: Étant donné qu'il semble exister plusieurs façons de procéder, je préférerais que l'info-bulle ressemble à l'option " Basé sur le gestionnaire étendu Visual Manager & info-bulle comme affiché dans cette capture d'écran .
Merci!
La solution
Je ne pense pas qu'il soit possible d'afficher l'info-bulle sans que le curseur de la souris se trouve sur le contrôle. Tout cela se fait automatiquement.
Toutefois, si vous souhaitez avoir une jolie info-bulle comme sur votre capture d'écran, vous devez appeler SetToolTipText
et SetDescription
, comme suit:
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);
Autres conseils
J'utilise des contrôles CMFCRibbonButton
dans un CMFCRibbonButtonGroup
, qui est ajouté au CMFCRibbonStatusBar
. Prenez note du 4ème paramètre du constructeur CMFCRibbonButton ()
, bAlwaysShowDescription
, car cela semble affecter le comportement selon que SetDescription ()
a été appelé.
Plus précisément, si SetDescription ()
n'a pas été appelé, le fait que bAlwaysShowDescription
ait la valeur TRUE ou FALSE - l'info-bulle est affichée (comme je le pensais ). Si SetDescription ()
est défini et que bAlwaysShowDescription
est défini sur FALSE, lors du survol du bouton, l'info-bulle est affichée avec la description située en dessous.
Ce qui semble contre-intuitif étant donné le nom de ce paramètre bAlwaysShowDescription
, c’est que lorsque ce paramètre est VRAI et que SetDescription ()
est défini, NI Les info-bulles ni la description n'apparaissent. Je me demande si cela est lié à ce post:
https://connect.microsoft .com / VisualStudio / feedback / détails / 399646 / cmfcribbonbutton-wont-show-tooltip-if-balwaysshowdescription-1
J'espère que cela vous aide et que vous pouvez obtenir ce dont vous avez besoin avec les différentes combinaisons de paramètre bAlwaysShowDescription
et si SetDescription ()
est défini.