Как отобразить всплывающую подсказку для CMFCRibbonButton в строке состояния? - PullRequest
1 голос
/ 31 октября 2008

У меня есть 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, но не смог понять, как это сделать, поскольку все, что они делают - это отображают всплывающие подсказки для элементов панели инструментов или диалоговых кнопок (* CMFCRibbonButton вместо *1022*) .

Если вы знакомы с примером проекта ToolTipDemo: поскольку кажется, что есть несколько способов сделать что-то, я бы предпочел, чтобы всплывающая подсказка выглядела как всплывающая подсказка «На основе расширенного Visual Manager», как , показанное в этот скриншот .

Спасибо!

Ответы [ 2 ]

2 голосов
/ 03 февраля 2009

Я не думаю, что можно отобразить всплывающую подсказку без наведения курсора мыши на элемент управления. Это все делается автоматически.

Однако, если вы хотите иметь красивую подсказку, как на скриншоте, вам нужно вызвать 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);
0 голосов
/ 06 июля 2012

Я использую CMFCRibbonButton элементы управления в CMFCRibbonButtonGroup, который добавляется к CMFCRibbonStatusBar. Обратите внимание на 4-й параметр в конструкторе CMFCRibbonButton(), bAlwaysShowDescription, так как это, кажется, влияет на поведение в зависимости от того, был ли вызван SetDescription().

В частности, если SetDescription() не был вызван, не имеет значения, является ли bAlwaysShowDescription ИСТИНА или ЛОЖЬ - отображается подсказка (как я и ожидал). Если установлено SetDescription(), а bAlwaysShowDescription - ЛОЖЬ, при наведении курсора на кнопку отображается подсказка с описанием под ней.

Что кажется нелогичным, если дать имя этому параметру bAlwaysShowDescription, так это то, что когда он установлен в TRUE и установлен SetDescription(), NEITHER отображается подсказка или описание. Интересно, связано ли это с этим постом: https://connect.microsoft.com/VisualStudio/feedback/details/399646/cmfcribbonbutton-wont-show-tooltip-if-balwaysshowdescription-1

Надеюсь, что это поможет, и вы можете достичь того, что вам нужно, с помощью различных комбинаций параметра bAlwaysShowDescription и установки SetDescription().

...