【问题标题】:How to add submenu to a CMenu in MFC?如何将子菜单添加到 MFC 中的 CMenu?
【发布时间】:2009-07-20 21:14:32
【问题描述】:

我有一个使用 CMenu 作为主菜单栏的 MFC 应用程序。
我未能成功创建子菜单。

我可以拥有第一级文件、编辑、查看等及其子菜单,但我无法从其中一个菜单中创建子菜单。

例如,我希望能够进入 File->Recent Items->子菜单中的项目列表
我可以使用 VS 中的资源编辑器轻松完成此操作,但这需要动态完成。

我在 CMenu 中使用了正确的类吗?关于尝试什么的任何建议?
我还没有找到任何像样的教程。即使将我指向正确的方向也会有所帮助。

【问题讨论】:

  • 你使用什么编程语言?

标签: c++ mfc menu submenu cmenu


【解决方案1】:

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

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】:

    我今天必须做同样的事情,我在 VS2008 上使用功能包(新的 UI 内容),并且正在查看示例,并且有关于如何动态添加菜单项的示例 (http://msdn.microsoft.com/en-us/library/bb983167.aspx)

    您需要重写 CFrameWndEx::OnShowPopupMenu 方法。

    最大。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-27
      • 1970-01-01
      相关资源
      最近更新 更多