正文

菜单的事件响应和状态响应2009-03-29 20:30:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xman/41855.html

分享到:

ON_COMMAND是点了按钮或菜单项后的响应消息, ON_UPDATE_COMMAND_UI是用来表示对应的按钮和菜单项的状态的响应消息. 比如WINDOWS自带的记事本程序,它的"格式"菜单下有个"自动换行",那么在编写记事本这个程序时, 对文本进行自动换行或不自动换行的操作就要放在ON_COMMAND消息响应函数里,而"自动换行"菜单项左边是否打勾的操作则放在ON_UPDATE_COMMAND_UI响应函数里. 下面新建一个单文档MFC工程,然后添加菜单demo|ShowSelect,其ID为ID_DEMO_SHOW。 右击“ShowSelect”进入ClassWizard,我们可以看到该菜单有两个待选消息响应: 1.       COMMAND,对应ON_COMMAND消息 2.       UPDATE_COMMAND_UI,对应ON_UPDATE_COMMAND_UI消息 选择Messages:COMMAND,然后“Add Function”,ON_COMMAND(ID_DEMO_SHOW, OnDemoShow) 选择Messages: UPDATE_COMMAND_UI,然后“Add Function”, ON_UPDATE_COMMAND_UI(ID_DEMO_SHOW, OnUpdateDemoShow) 现在添加简单的菜单事件响应:点击demo|ShowSelect菜单后,弹出对话框,提示“您刚才点击勾选了"demo|ShowSelect"菜单!”,同时使菜单条前打勾;再次点击此菜单后,提示“您刚才点击退选了\"demo|ShowSelect\"菜单!”,并且菜单条前的勾将消失。 为了记录菜单的点击情况,需要为MainFrm添加BOOL bCheck辅助变量,并初始化bCheck=FALSE;。 //一次勾选,二次退选 void CMainFrame::OnDemoShow() {      // TODO: Add your command handler code here         if(!bCheck)      {          bCheck=TRUE;          AfxMessageBox("您刚才点击勾选了\"demo|ShowSelect\"菜单!");      }             else      {          bCheck=FALSE;          AfxMessageBox("您刚才点击退选了\"demo|ShowSelect\"菜单!");            } } void CMainFrame::OnUpdateDemoShow(CCmdUI* pCmdUI) {      // TODO: Add your command update UI handler code here      pCmdUI->SetCheck(bCheck); // 勾选     // 还原bCheck值      if(bCheck)          bCheck=FALSE;      else          bCheck=TRUE; }     此外,我们还可以调用CCmdUI类的Enable()方法允许或禁止(变灰)该选项;调用SetRadio()设置菜单选中有黑点;调用SetText()设置项的文本。          参考:http://hi.baidu.com/tuke0001/blog/item/f1b8130e95e430cf7bcbe1dc.html

阅读(3836) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册