【问题标题】:Adding a tooltip to CMenu item(s)向菜单项添加工具提示)
【发布时间】:2015-10-12 01:51:36
【问题描述】:

前段时间,我尝试在 CMenu 项目上添加一个工具提示以用于测试目的。现在我需要它,但我又面临同样的问题。

这个问题和答案: MFC : How to add tooltip in Cmenu items?
根本没有帮助我,因为这种“换行魔法”根本不起作用。

另外,似乎我不是唯一一个遇到问题的人: MFC CMenu tooltip not being displayed

void CTextListCtrl::CreateMenu(void)
{
    m_Menu.CreateMenu();
    CMenu submenu;
    submenu.CreatePopupMenu();
    submenu.AppendMenuW(MF_STRING, IDC_RESEND_POPUP, L"&Resend\nShow me the tooltip");
    //Other menu items...
    m_Menu.AppendMenuW(MF_POPUP, reinterpret_cast<UINT_PTR>(submenu.m_hMenu), L"");
    submenu.Detach();
}

结果是这样的:

但是,增加文本的字母会导致弹出菜单更大,而不是菜单工具提示。

我已经看到了这个答案中的其他链接,并检查了它们和项目。但这些都不是我想要的。

有人知道我做错了什么吗,或者是否有其他可能有用的解决方案/来源?


编辑:正如我之前在comment 中提到的,这里是sample solution,具有重现问题的最低要求。 (请参阅 CMenuListCtrl.cpp(100)
用 VS2010 和 VS2015 测试(结果相同)。

【问题讨论】:

  • 也许它只是将 \n 替换为 \r\n ,这是 MFC 预期的换行符。
  • @Totonga 不,我试过了,结果一样。

标签: c++ visual-c++ mfc tooltip cmenu


【解决方案1】:

这里有一个技巧可以解决你的问题,“换行魔法”肯定会起作用。

确保您使用的是 ComCtl32.dll 版本 6。

在 stdafx.h 文件中添加以下块并重建您的项目。

#pragma comment(linker, "\"/manifestdependency:type='win32'\
name='Microsoft.Windows.Common-Controls' version='6.0.0.0' \
processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")

【讨论】:

  • 默认情况下这是在stdafx.h,它不起作用。
  • 你能和我分享你的 VC++ 解决方案吗?
  • Solution uploaded 具有重现问题的最低要求。假设CMenu 也可以在任何其他类或控件中。
  • 访问codeproject.com/Articles/217588/…,示例包括CMenuToolTip类,看看它是如何使用的。见 OnMenuSelect()
  • 这是一个基于文档的 MFC 应用程序,我之前在 Microsoft 示例中看到过这样做更容易。然而,这是一个基于对话的应用程序。只有一个简单的CMenu 和子菜单。 CMenu 可以是屏幕截图中的系统菜单,也可以是CListCtrlCComboBox 或其他控件上的弹出窗口。我还看到并检查了the project with a similar dialog - 项目中交付的.exe 有效。编译它没有。 (无 TT)
猜你喜欢
  • 1970-01-01
  • 2019-08-14
  • 1970-01-01
  • 2017-06-03
  • 1970-01-01
  • 2011-01-25
  • 2016-10-08
  • 2011-10-30
相关资源
最近更新 更多