COMMAND与UPDATE_COMMAND_UI的区别

UPDATE_COMMAND_UI

处理菜单对应的用户界面  

COMMAND

处理该菜单对应的功能

 

一 个菜单拉下来,使用者可以从命令项的状态(打勾或没打勾、灰色或正常)得到一些状态提示。如果Document 中没有任何资料的话,【Edit/Clear All】照道理就不应该起作用,因为根本没资料又如何"Clear All" 呢?! 这时候我们应该把这个命令项除能(disable)。又例如在粗笔状态下,程序的【Pen/Thick Line】命令项应该打一个勾(所谓的check mark),在细笔状态下不应该打勾。此外,菜单命令项的状态应该同步影响到对应之工具栏按钮状态。

所有UI 对象状态的维护可以依赖所谓的UPDATE_COMMAND_UI 消息。

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

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

 
例如,要使菜单变灰、或者在菜单项里面打勾则用UPDATE_COMMAND_UI,否则使用用COMMAND  
  

例子: 

 
void    CMainFrame::OnUpdateSelectBlue(CCmdUI*    pCmdUI)    
{

pCmdUI->SetCheck(true);//把菜单选中

}   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值