不久前,我尝试在CMenu项目上添加工具提示以进行测试.现在我需要它,我再次遇到同样的问题.
这个问题和答案:
MFC:如何在Cmenu项目中添加工具提示?
对我来说根本没有帮助,因为这种"换行魔术"根本就不起作用.
此外,似乎我不是唯一一个有问题的人: 没有显示MFC CMenu工具提示
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();
}
Run Code Online (Sandbox Code Playgroud)
结果是这样的:

但是,增加文本字母会产生更大的弹出菜单,而不是菜单工具提示.
我已经看到了这个答案中的其他链接,并检查了它们和项目.但这些不是我想要的.
有人知道我做错了什么,或者有其他解决方案/来源可能有用吗?
编辑:正如我之前在评论中提到的,这里是一个示例解决方案,具有重现问题的最低要求.(参见CMenuListCtrl.cpp(100))
使用VS2010和VS2015测试(结果相同).
我试图用这样的东西来设置的CMenu项的工具提示(如描述在这里),但它只是显示在一个单一的线和换行符是不可见的.
// read control id
UINT id = menu->GetMenuItemID(1235);
// modify caption and add tooltip?
menu->ModifyMenu( id, MF_BYCOMMAND, id, "Click here\nThis is the tooltip for the menu item ...");
Run Code Online (Sandbox Code Playgroud)
我还尝试直接在菜单项的visual studio资源设计器中设置标题,效果相同.你能给我任何关于什么错误的提示吗?我在Windows 7上使用VS2008.
任何帮助表示赞赏!
我使用CMenu小部件创建了一个类似Twitter Bootstrap导航栏的菜单:
<?php
$this->widget( 'zii.widgets.CMenu', array(
'items' => array(
array(
'label' => 'Home',
'url' => array( '/site/index' ),
),
array(
'label' => 'Dropdown <b class="caret"></b>',
'url' => '#',
'submenuOptions' => array( 'class' => 'dropdown-menu' ),
'items' => array(
array(
'label' => 'Submenu Item 1',
'url' => array( '/user/create' ),
),
array(
'label' => 'Submenu Item 1',
'url' => array( '/user/list' ),
),
),
'itemOptions' => array( 'class' => 'dropdown' ),
'linkOptions' => array( 'class' => 'dropdown-toggle', 'data-toggle' => 'dropdown' ), …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用.禁用/灰显菜单项 CMenu::EnableMenuItem()方法.
我有一个引用对话框顶部菜单的CMenu*变量pMenu.我可以使用pMenu->GetSubMenu(int)和使用子菜单submenu->GetMenuStringA(),验证我得到的子菜单/菜单项的名称.我遇到了这个EnableMenuItem()方法的麻烦.让我们说这是一个File菜单.在它有New和Open弹出菜单和Import,Close和Close All菜单项.在New和Open有子菜单项.(例如New->Document)使用submenu->EnableMenuItem([position of submenu/menuitem], MF_BYPOSITION | MF_GRAYED);我可以禁用New或Open,但功能失败Import,Close以及Close All,以及所有菜单项New和Open.
注意:我说的时候 EnableMenuItem()失败时,我并不是说它返回-1.它返回先前的状态,但菜单不会被禁用或变灰.
在以下MSDN文档中EnableMenuItem():http://msdn.microsoft.com/en-us/library/h62wh3y1.aspx它声称这适用于弹出菜单项和标准菜单项.但它似乎只适用于弹出窗口.
如何为CMenu项添加工具提示?我找不到任何简单而有用的资源.请帮忙.谢谢...