У меня есть CMFCRibbonStatusBar в моем мэйнфрейме, к которому я добавляю CMFCRibbonButtonsGroup, который снова имеет CMFCRibbonButton. Эта кнопка имеет тот же идентификатор, что и запись в меню.
Создание кнопки происходит следующим образом:
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(""));
Я хочу использовать эту кнопку как индикатор состояния.
Я хочу отображать всплывающую подсказку в следующих двух случаях:
Я вообще понятия не имею, с чего начать. Я просмотрел образцы проектов ToolTipDemo и DlgToolTips, но не мог понять, как это сделать, поскольку все, что они делают, - это отображение всплывающих подсказок для элементов панели инструментов или кнопок диалога (производных от CWnd вместо CMFCRibbonButton).
Если вы знакомы с примером проекта ToolTipDemo: поскольку кажется, что существует несколько способов сделать что-то, я бы предпочел, чтобы всплывающая подсказка выглядела как подсказка «на основе расширенного визуального менеджера» как показано на этом скриншоте.
Спасибо!





Я не думаю, что можно показать всплывающую подсказку, если курсор мыши не находится над элементом управления. Все это делается автоматически.
Однако, если вы хотите иметь красивую всплывающую подсказку, как на скриншоте, вам нужно вызвать SetToolTipText и SetDescription, например:
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);
Я использую элементы управления CMFCRibbonButton в CMFCRibbonButtonGroup, который добавлен к CMFCRibbonStatusBar. Обратите внимание на четвертый параметр в конструкторе CMFCRibbonButton(), bAlwaysShowDescription, поскольку он, кажется, влияет на поведение в зависимости от того, был ли вызван SetDescription().
В частности, если SetDescription() не был вызван, не имеет значения, является ли bAlwaysShowDescription ИСТИННЫМ или ЛОЖНЫМ - отображается всплывающая подсказка (как я и ожидал). Если SetDescription() установлен, а bAlwaysShowDescription - ЛОЖЬ, при наведении курсора на кнопку отображается всплывающая подсказка с описанием под ней.
Что кажется нелогичным с учетом имени этого параметра bAlwaysShowDescription, так это то, что, когда он имеет значение ИСТИНА и установлен SetDescription(), появляется НИ ОДИН всплывающая подсказка или описание. Интересно, связано ли это с этим сообщением:
https://connect.microsoft.com/VisualStudio/feedback/details/399646/cmfcribbonbutton-wont-show-tooltip-if-balwaysshowdescription-1
Надеюсь, это поможет, и вы сможете добиться того, что вам нужно, с помощью различных комбинаций параметра bAlwaysShowDescription и того, установлен ли SetDescription().