我有一个 MDI 工程,主窗口的菜单如下[程序] [操作] [帮助]自窗口菜单为 
[菜单1] [菜单2]我想在程序打开一个自窗口后,程序的菜单变为
[程序] [操作] [菜单1] [菜单2] [帮助]其中 [操作] 菜单是根据一个外部文件,动态创建里边的菜单项。自窗口是在一个DLL中。如果[操作]菜单是固定的,我可以在资源管理里将主菜单的[操作]菜单复制,然后打开自窗口的
菜单,在粘贴上就行了。可是现在是动态创建就不能用这个方法了。大家帮帮忙啊。

解决方案 »

  1.   

    好好研究CMenu以及MDI创建子窗口后的菜单生成过程吧
    这个东西很简单的,靠CMenu提供的接口和你自己的程序逻辑完全可以搞定!
      

  2.   

    1、取主框架窗菜单在子框架窗体中响应消息:CMenu* pMainMenu = this->GetMenu();
    2、取操作菜单:CMenu* pOpMenu = pMainMenu->GetSubMenu(pos);pos为操作菜单位置
    3、更新操作菜单:先用RemoveMenu删除所有子菜单,然后用AppendMenu添加需要的菜单
      

  3.   

    我的主窗口的菜单ID为 MAIN_MENU
    子窗口的菜单ID为 CHILD_MENU
    问题是当我打开一个子窗口后,程序的菜单就自动变成子窗口的菜单了。
    而[操作]菜单的添加过程是在程序初始化里实现的。
      

  4.   

    是啊,所以要在CChildFrame那个类中来修改操作菜单,不过你要在子框架的菜单中加入操作菜单,然后动态实现它的子菜单
      

  5.   

    to jdzwq:
    说的有道理。