我有一个使用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方法。

最大

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top