如何在动态创建的 CMFCToolbar 的 ToolTip 中添加描述?

Posted

技术标签:

【中文标题】如何在动态创建的 CMFCToolbar 的 ToolTip 中添加描述?【英文标题】:How to add description in dynamically created CMFCToolbar's ToolTip? 【发布时间】:2018-09-14 12:49:19 【问题描述】:

CMFCToolbar继承了EnableToolTip函数,如果开发者动态创建工具栏而不在资源中添加描述和标题,这对开发者没有帮助。 我为CMFCToolBar做了一个扩展并写了一个函数:

BOOL CMFCToolBarEx::OnNeedTipText(UINT /*id*/, NMHDR* pNMH, LRESULT* /*pResult*/)

    TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMH;
   // UINT nID = static_cast<int>(pNMH->idFrom);
    CString strTip = _T("");

    CPoint point;
    ::GetCursorPos(&point);
    ScreenToClient(&point);
    INT_PTR nHit = ((CMFCToolBar*)this)->HitTest(point);

    if(nHit == -1)
        return FALSE;

    CMFCToolBarButton* pButton = GetButton((int)nHit);
    strTip = pButton->m_strText;
    _tcscpy(pTTT->lpszText , strTip.GetBuffer(0));

    return TRUE;

在 cmfctoolbar 按钮中显示工具提示。

cmfctoolbar 按钮不带参数,没有设置描述的功能。构造函数采用如下参数:

pToolBarButton = new CMFCToolBarButton(nId, nIconIndex, lpszText);

如果我将参数 lpszText 设置为仅带有标题的工具提示,则会出现 like this

我需要在这个工具栏上添加描述并查看它like this如果有人能提出更好的方法来做它

【问题讨论】:

【参考方案1】:

任何人都在寻找答案。在这里你只需添加

CTooltipManager::SetTooltipText((TOOLINFO*) pTTT, m_pToolTip, AFX_TOOLTIP_TYPE_TOOLBAR, strTip, strDescr); 

到您覆盖的 onneedtiptext 函数。

【讨论】:

以上是关于如何在动态创建的 CMFCToolbar 的 ToolTip 中添加描述?的主要内容,如果未能解决你的问题,请参考以下文章

如何在mfc中设置大小和透明/清除CMFCToolBar按钮和图标?

如何从自定义对话框工具栏属性页隐藏CMFCToolBar?

如何更改 CMFCToolBar 运行时

如何使浮动 CMFCToolbar 不可移动

MFC:如何让 CMFCToolBarComboBoxButton 显示在 CMFCToolBar 上?

销毁 CMFCMenuBar 和 CMFCToolBar 并重新创建它们的正确方法是啥?