Как мне отобразить всплывающую подсказку для CMFCRibbonButton в строке состояния?
-
05-07-2019 - |
Вопрос
У меня есть 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
.Обратите внимание на 4 -й параметр в CMFCRibbonButton()
конструктор, bAlwaysShowDescription
, поскольку это , по - видимому , влияет на поведение в зависимости от того , является ли SetDescription()
был вызван.
В частности, если SetDescription()
не был вызван, не имеет значения, был ли bAlwaysShowDescription
имеет значение TRUE или FALSE - отображается всплывающая подсказка (как я и ожидал).Если SetDescription()
устанавливается и bAlwaysShowDescription
имеет значение FALSE, при наведении курсора мыши на кнопку отображается всплывающая подсказка с описанием под ней.
Что кажется нелогичным, учитывая название этого bAlwaysShowDescription
параметр, заключается в том, что когда это ВЕРНО и SetDescription()
установлен, НИ ТО , ни ДРУГОЕ появится всплывающая подсказка или описание.Интересно, связано ли это с этим постом:https://connect.microsoft.com/VisualStudio/feedback/details/399646/cmfcribbonbutton-wont-show-tooltip-if-balwaysshowdescription-1
Надеюсь, это поможет, и вы сможете достичь того, что вам нужно, с помощью различных комбинаций bAlwaysShowDescription
параметр и является ли SetDescription()
установлен.