代码之家  ›  专栏  ›  技术社区  ›  CodeFusionMobile

如何在MFC中将子菜单添加到CMenu?

  •  1
  • CodeFusionMobile  · 技术社区  · 15 年前

    我有一个mfc应用程序使用cmenu作为主菜单栏。
    我无法成功创建子菜单。

    我可以有第一级的文件、编辑、视图等及其子菜单,但我不能从其中一个菜单创建子菜单。

    例如,我希望能够转到文件->最近的项目-> 子菜单中的项目列表
    我可以用VS中的资源编辑器很容易地做到这一点,但这需要动态地完成。

    我使用的是菜单中的正确类吗?有什么建议吗?
    我没有找到任何像样的教程。即使把我指向正确的方向也会有所帮助。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Jared    15 年前

    使用资源编辑器添加包含一个占位符项的子菜单。然后,可以通过编程获取对此子菜单的引用,向其添加项并删除占位符项:

    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 );
    }
    
        2
  •  0
  •   Max    15 年前

    我今天也做了同样的事情,我在VS2008上使用了功能包(新的用户界面工具),并查看了示例,还有关于如何动态添加菜单项的示例( http://msdn.microsoft.com/en-us/library/bb983167.aspx )

    您需要重写cframewndex::onShowPopupMenu方法。

    最大值。