Как мне отобразить всплывающую подсказку для CMFCRibbonButton в строке состояния?

StackOverflow https://stackoverflow.com/questions/253469

Вопрос

У меня есть 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() установлен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top