如何添加子菜单在MFC中的CMenu?
题
我有一个使用CMenu的主菜单栏中的MFC应用程序。结果, 我一直没能成功创建子菜单。
我可以有文件的第一级,编辑,查看,等和他们的子菜单,但我不能创建一个子菜单关闭这些菜单之一。
例如,我希望能够去文件 - >最近的项目 - > 在子菜单项列表的结果 我能做到这一点很容易不够,在VS的资源编辑器,但是这需要进行动态完成的。
我使用在CMenu的右侧类?什么尝试任何建议?点击 我还没有找到任何像样的教程。甚至指点我朝着正确的将是有益的。
解决方案
使用你的资源编辑器添加包含一个占位符项的子菜单。然后,您可以通过编程来抓住这个子菜单中的引用,添加项目和删除占位符项:
CMenu *subMenu = mainMenu.GetSubMenu( menuPosition );
if( subMenu )
{
for( unsigned i = 0; i < stringArray.size(); i++ )
{
subMenu->AppendMenu( MF_STRING, 400 + i, stringArray[i]);
}
subMenu->DeleteMenu( ID_SUBMENU_PLACEHOLDER, MF_BYCOMMAND );
}
其他提示
我不得不做同样的事情今天,我在与功能包(新UI的东西)VS2008,并一直在寻找的样本,有关于如何添加动态菜单项(的 http://msdn.microsoft.com/en-us/library/bb983167.aspx )
您需要重写CFrameWndEx :: OnShowPopupMenu方法。
最大
不隶属于 StackOverflow