我做的软件有两个界面,要求功能写在两个不同的菜单中,我想再界面切换时删除原工具栏和菜单项并重新加载相应的新的菜单项和工具栏,请问这种设计思路可行吗,如何实现,谢谢。

解决方案 »

  1.   

    可以实现可以使用下面几个函数CMenu::LoadMenuBOOL LoadMenu( LPCTSTR lpszResourceName );
    BOOL LoadMenu( UINT nIDResource );以及
    CWnd
    GetMenu 获得指定菜单的指针  
    SetMenu 将菜单设为指定的菜单  工具栏就更简单啦,随便找个单文档程序,里面就有创建的源码
      

  2.   

    可以实现的,
    两个都可以在CMainFrame下实现,在加载的时候是在CMainFrame的OnCreate()函数中实现的。
    在加载菜单的时候可以通过,CMenu的成员函数LoadMenu()函数实现,他有两种形式,具体的查看一下
    MSDN.要讲的是如果通过一个对象加载菜单的话,不要忘记Detach()一下,否则会出错。
    在实现工具栏加载的时候,可以通过CToolBar的Create()函数实现。2楼也讲了,看一下SDI或者MDI
    里的CMainFrame类的OnCreate()函数即可
      

  3.   

    把原来的工具栏和菜单隐藏(ShowWindow(SW_HIDE)),再显示新的工具栏,然后调CMainFrame的RepositionBars和RecalcLayout
      

  4.   

    2楼提到的SetMenu即可以替换窗口的默认菜单栏