我有一个MFC应用程序,它使用CMenu作为主菜单栏 我无法成功创建子菜单。
我可以拥有第一级文件,编辑,视图等及其子菜单,但我无法从其中一个菜单创建子菜单。
例如,我希望能够在子菜单中找到File-> Recent Items-> 项目列表
我可以使用VS中的资源编辑器轻松完成此操作,但这需要动态完成。
我在CMenu使用正确的班级吗?关于尝试什么的任何建议?
我还没有找到任何体面的教程。即使把我指向正确的也会有所帮助。
答案 0 :(得分:2)
使用资源编辑器添加包含一个占位符项的子菜单。然后,您可以以编程方式获取对此子菜单的引用,向其中添加项目并删除占位符项:
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 );
}
答案 1 :(得分:0)
今天我必须做同样的事情,我在VS2008上使用Feature Pack(新的UI东西),并且正在查看示例,并且有关于如何动态添加菜单项的示例(http://msdn.microsoft.com/en-us/library/bb983167.aspx )
您需要覆盖CFrameWndEx :: OnShowPopupMenu方法。
最大