如图,我新建路简单的单文档MFC工程,并在Resource中建立了一些菜单项。
其中有一个菜单包含4个子项:
━┓
-设置
-直线
-矩形
-圆形
我希望点击“设置”后,将默认Gray的“直线、矩形、圆形”等菜单项激活。
我的步骤如下:
1、在CMainFrame中响应“设置”,并在响应函数中添加代码(暂时尝试一个菜单项):
GetMenu()->GetSubMenu(2)->EnableMenuItem(1,MF_BYPOSITION | MF_ENABLED);
2、在CMainFrame构造函数中写:m_bAutoMenuEnable=FALSE;以上步骤以后,我点击“设置”没有效果。请问我还缺什么步骤?本人新手,做课程设计在这里卡好久了。

解决方案 »

  1.   

    可以通过ON_UPDATE_COMMAND_UI实现
    在设置的菜单消息中设置相应的变量值
    在“直线、矩形、圆形”对应的消息中通过pCmdUI->Enable设置可用性
      

  2.   

    如果直线、矩形、圆形这三个菜单ID相连的话,楼主可以使用下面的消息,MFC Class Wizard没有的,要自己手动添加。
    不需要对每个菜单写更新函数。能减少很多代码,而且多个菜单只有一个有效
    ON_UPDATE_COMMAND_UI_RANGE(ID_Line,ID_Circle,OnUpdateShapechoice)
    void CXXXView::OnUpdateShapechoice(CCmdUI *pCmdUI)
    {
    pCmdUI->SetRadio(choice==(pCmdUI->m_nID-ID_Line));
    }
    关于choice在你点每个菜单击事件中进行设定,比如点直线设置choice=0,其他依次递增。