VC++ COMMAND与UPDATE

来源:百度文库 编辑:神马文学网 时间:2024/05/23 11:39:17

COMMAND与UPDATE_COMMAND_UI的区别

(2008-08-15 10:08:05)转载 标签:

杂谈

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);//把菜单选中

  

分享到新浪微博 阅读(175) 评论 (0)收藏(0) 转载分享 打印举报 已投稿到: 排行榜

转载列表:

    转载 后一篇:OnPaint()、 OnDraw()、 OnPrint()的区别和联系 评论重要提示:警惕虚假中奖信息,点击查看详情        [发评论]
    • 暂无评论。
      发评论随时随地抢沙发!       插入表情

      登录名: 密码: 找回密码 注册 建议在网吧/公用电脑上取消该选项

      验证码: 请点击后输入验证码 收听验证码

      发评论

      以上网友发言只代表其个人观点,不代表新浪网的观点或立场。