我在mainframe里响应的函数用了
GetMenu()->GetSubMenu(5)->GetSubMenu(2)->CheckMenuItem(ID_GROUPDEF,MF_BYCOMMAND|MF_CHECKED);
我是多文档视图,其中视图作为窗口时候就可以实现,当视图view最大化之后选择该按钮就出错,还有别的办法吗

解决方案 »

  1.   

    一般应该在CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)函数中设置菜单项的属性。
    你的代码应该改为GetMenu()->GetSubMenu(5)->CheckMenuItem(ID_GROUPDEF,MF_BYCOMMAND|MF_CHECKED); 对同一个子菜单进行了两次索引当然会出错。
      

  2.   

    菜单打钩的正确做法是响应UPDATE_COMMAND_UI事件,具体在类-〉属性-〉事件 里有
      

  3.   

    有两级子菜单当然要两级索引,UPDATE_COMMAND_UI我始终不太明白是什么意思,我也试了pCmdUI的check,但是一进入菜单还没选择就打勾了,和我的要求不同啊
      

  4.   

    UPDATE_COMMAND_UI 是菜单显示前发出的消息. 你可以另外保存菜单项的状态, 这样在UPDATE_COMMAND_UI响应函数里判断菜单是否在上一次被选择了.
      

  5.   

    可以了,我分别用command和UPDATE_COMMAND_UI 响应两次,command用bool变量记录是否选中,UPDATE_COMMAND_UI 判断bool变量,更改菜单。
    有点麻烦