COMMAND与UPDATE_COMMAND_UI的区别——MFC

本文介绍了在MFC框架下使用UPDATE_COMMAND_UI消息来统一处理菜单命令项的状态变化,包括使其变灰或在菜单项中打勾,从而简化程序逻辑并提高代码可维护性。

UPDATE_COMMAND_UI

   处理菜单对应的用户界面

COMMAND

   处理该菜单对应的功能

传统SDK程序;要改变选单命令项状态,可以呼叫EnableMenuItem或是

CheckMenuItem,但这使得程序杂乱无章,因为你没有;个固定的位置和固定的原则处理命令项状态。MFC提供;种直觉并且仍旧依赖讯息观念的方式,解决这个问题,这就是UPDATE_COMMAND_UI讯息。其设计理念是,每当选单被拉;并尚未显示之前,其命令项(以及对应之工具栏按钮)都会收到UPDATE_COMMAND_UI讯息,这个讯息和WM_COMMAND有㆒样的绕行路线,我们(程序员)只要在适当的类别;放置其处理函式,并在函式;做某些判断,便可决定如何显示命令项。

   这种方法的最大好处是,不但把问题的解决方式统化,更因为    Framework传给UPDATE_COMMAND_UI处理程序的参数是个「指向CCmdUI对象的指针」,而CCmdUI对象就代表着对应的选单命令项,因此你只需呼叫    CCmdUI    所准备的,专门用来处理命令项外观的函式(如Enable或SetCheck)即可。我们的工作量大为减轻。   

   (选摘自《深入浅出MFC》第9章)

UPDATE_COMMAND_UI
   处理菜单对应的用户界面

COMMAND
   处理该菜单对应的功能   

   说得很好:)

   如果要使菜单变灰、或者在菜单项里面打勾
   用那个UPDATE_COMMAND_UI,否则用command  

   例子:
   void    CMainFrame::OnUpdateSelectBlue(CCmdUI*    pCmdUI)
   {
   //    TODO:    Add    your    command    update    UI    handler    code    here
   pCmdUI->SetCheck(true);//把菜单选中 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值