1

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

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

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

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

4

2 回答 2

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 );
}
于 2009-07-21T15:51:45.793 回答
0

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

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

最大限度。

于 2009-07-21T01:11:17.413 回答