打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VC++ COMMAND与UPDATE

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

}   

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
MFC浅析(5) 命令更新机制
如何取消菜单项的勾选
关于模态/非模态对话框不响应菜单的UPDATE
模态/非模态对话框不响应菜单的UPDATE
菜单
MFC – 通过spy++查找应用程序菜单对应函数的方法 | 学步园
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服