如何在状态栏中显示CMFCRibbonButton的工具提示?

时间:2008-10-31 13:30:32

标签: c++ visual-studio-2008 ribbon tooltip mfc-feature-pack

我的大型机中有一个CMFCRibbonStatusBar,我添加了CMFCRibbonButtonsGroup,其中又有CMFCRibbonButton。此按钮与菜单条目具有相同的ID。

创建按钮的步骤如下:

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(""));

我想将此按钮用作状态指示器。

我想在以下两种情况下显示工具提示:

  • 状态改变时
  • 当用户将鼠标移到按钮上时。

我不知道如何从头开始。我查看了ToolTipDemoDlgToolTips示例项目,但无法弄清楚如何执行此操作,因为他们所做的只是显示工具栏项或对话框按钮的工具提示(CWnd - 派生而不是CMFCRibbonButton)。

如果您熟悉ToolTipDemo示例项目:由于似乎有多种方法可做,我希望工具提示看起来像“基于扩展的基于可视化管理器”的工具提示{{3 }}

谢谢!

2 个答案:

答案 0 :(得分:2)

我不认为在没有鼠标光标超出控件的情况下显示工具提示是不可能的。这一切都是自动完成的。

但是,如果您希望在屏幕截图中看到漂亮的工具提示,则需要拨打SetToolTipTextSetDescription,如下所示:

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);

答案 1 :(得分:0)

我在CMFCRibbonButton中使用CMFCRibbonButtonGroup个控件,该控件已添加到CMFCRibbonStatusBar。请注意CMFCRibbonButton()构造函数bAlwaysShowDescription中的第4个参数,因为这似乎会影响行为,具体取决于是否已调用SetDescription()

具体来说,如果没有调用SetDescription()bAlwaysShowDescription是否为TRUE或FALSE无关紧要 - 显示工具提示(正如我所料)。如果SetDescription()已设置且bAlwaysShowDescription为FALSE,则将鼠标悬停在按钮上时,会显示工具提示及其下方的说明。

对于此bAlwaysShowDescription参数的名称,似乎违反直觉的是,当此设置为“真”并且设置了SetDescription()时, NEITHER 将显示工具提示和说明。我想知道这是否与这篇文章有关: https://connect.microsoft.com/VisualStudio/feedback/details/399646/cmfcribbonbutton-wont-show-tooltip-if-balwaysshowdescription-1

希望这会有所帮助,您可以使用bAlwaysShowDescription参数的不同组合以及是否设置SetDescription()来实现您所需的功能。