none
关于MDI中使用GetMenu和GetSubMenu的问题 RRS feed

  • 问题

  •   本人初学MFC,在看视频教程的过程中,看到可以直接在SDI使用GetMenu()->GetSubMenu(0)->SetDefaultItem(ID_FILE_NEW)来设置子菜单的默认项
    但是,当将此句用到MDI中时,程序出现异常而关闭.请问这是什么原因?(NOTE:该句放在CMainFrame的OnCreate函数中,所以排除了错放在其它类中的可能
    使用的是VS2008)
    2009年5月23日 17:38

答案

  • MDI子框架没有菜单。在文档激活的时候会用文档对应的文档模板替换MDI主框架的菜单
    MSMVP VC++
    2009年5月24日 17:25
    版主
  • 是的MDI会在创建模板的时候替换掉菜单。那么在CMainFrame OnCreate中设置菜单是不可行的了。
    我们可以在你的APP InitInstance()中CMainFrame LoadFrame之后
    调用pMainFrame->GetMenu()->GetSubMenu(0)->SetDefaultItem(ID_FILE_OPEN);来设置默认菜单。

    麻烦把正确答案设为解答。
    2009年5月27日 1:38
    版主

全部回复

  • MDI子框架没有菜单。在文档激活的时候会用文档对应的文档模板替换MDI主框架的菜单
    MSMVP VC++
    2009年5月24日 17:25
    版主
  • 是的MDI会在创建模板的时候替换掉菜单。那么在CMainFrame OnCreate中设置菜单是不可行的了。
    我们可以在你的APP InitInstance()中CMainFrame LoadFrame之后
    调用pMainFrame->GetMenu()->GetSubMenu(0)->SetDefaultItem(ID_FILE_OPEN);来设置默认菜单。

    麻烦把正确答案设为解答。
    2009年5月27日 1:38
    版主