第一个是响应打开菜单的命令的
第二个是你打开这个菜单时,处理这个菜单的状态,比如选中、变灰等等。
比如WINDOWS自带的记事本程序,它的"格式"菜单下有个"自动换行",那么在编写记事本这个程序时,对文本进行自动换行或不自动换行的操作就要放在ON_COMMAND消息响应函数里,而"自动换行"菜单项左边是否打勾的操作则放在ON_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对话框程序中添加工具栏及工具栏上的Button响应UPDATE_COMMAND_UI消息
本例在实现了在MFC对话框中使用工具栏(工具...并能较好响应ON_UPDATE_COMMAND_UI消息.同时能在响应函数中用SetCheck和Enable有效.里面也有能同时改变菜单ID相关联的工具栏按钮状态的能力,只是方法和在CMainFrame中不同.
MAP2.2 在窗口中输出文字.2.3 使用点、刷子、笔进行绘2.4 在窗口中绘制设备相关位图、图标、设备无关位图CDC memDC;//定义一个兼容DC2.5 使用各种映射方式2.6 多边形和剪贴区域3.1 文档视图框架窗口间的关系和消息...
CCmdUI类:该类仅用于ON_UPDATE_COMMAND_UI处理函数中 CColorDialog类:封装标准颜色对话框 CDC类:定义设备环境对象类 CDialog类:所有对话框(模态或非模态)的基类 CDocument类:提供用户定义的文档类的基本...
MFC借助C++的优势为Windows开发开辟了一片新天地,同时也借助ApplicationWizzard使开发者摆脱离了那些每次都必写基本代码,借助ClassWizard和消息映射使开发者摆脱了定义消息处理时那种混乱和冗长的代码段。...
CCmdUI类:该类仅用于ON_UPDATE_COMMAND_UI处理函数中 CColorDialog类:封装标准颜色对话框 CDC类:定义设备环境对象类 CDialog类:所有对话框(模态或非模态)的基类 CDocument类:提供用户定义的文档类的基本功能...
对话框的消息处理函数 对话框数据交换与校验(DDX&DDV) 如何唤起对话框 本章回顾 第11章 View功能的加强与重绘效率的提高 同时修改多个Views:UpdateAllViews和OnUpdate 在View中定义一个hint 把hint传给OnUpdate ...
同时修改多个Views:UpdateAllViews和OnUpdate 在View中定义一个hint 把hint传给OnUpdate 利用hint增加重绘效率 可卷动的窗口:CScrollView 大窗口中的小窗口:Splitter 切分窗口的功能 切分窗口的程序概念 切分窗口...
同时修改多个Views:UpdateAllViews和OnUpdate 在View中定义一个hint 把hint传给OnUpdate 利用hint增加重绘效率 可卷动的窗口:CScrollView 大窗口中的小窗口:Splitter 切分窗口的功能 切分窗口的程序概念 切分窗口...
同時修改多個Views:UpdateAllViews 和OnUpdate / 629 在 View ㆗定義㆒個hint / 631 把 hint 傳給OnUpdate / 635 利用 hint 增加重繪效率/ 637 可捲動的視窗:CScrollView / 640 大視窗㆗的小窗口:Splitter / 650 ...
6.1.2.5 给菜单项添加UPDATE_COMMAND_UI 消息处理 6.1.2.6 一个简单的绘图程序 6.1.3 在应用程序中控制菜单 6.1.3.1 在应用程序中取得菜单 6.1.3.2 在应用程序中修改菜单的状态 6.1.3.3 在应用程序中添加、删除...
使得UPDATE_COMMAND_UI在基于对话框中生效 具体说明在 http://blog.csdn.net/mjesse88/article/details/17527723或者在程序的右键后说明可以直接进入该页面
ON_UPDATE_COMMAND_UI(IDC_FILE_SAVE, OnUpdateFileSave) ON_CBN_SELCHANGE(IDC_PICTYPE, OnSelchangePictype) ON_WM_TIMER() ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1) ON_EN_CHANGE(IDC_ADDRESS, ...
SDK与MFC两套代码实现 使菜单和工具条按钮灰掉及打勾的不同实现 MFC心跳按钮与UpdateCommandUI的实现
LSIP200232954 (DFCT) Need to Support all the MFC default values in the command AdpSettings. LSIP200245968 (DFCT) In EFICLI not able to flash latest firmware to controller without using -nosigchk -...
UPDATE_COMMAND_UI with dialogs 在对话框中使用ON_UPDATE_COMMAND_UI(13KB)<END><br>13,13.zip Using ON_UPDATE_COMMAND_UI with dialogs (2) 使用ON_UPDATE_COMMAND_UI(11KB)<END><br>14,14.zip ...
// CommandLine parsing helper class CDocManager; // CDocTemplate manager object ///////////////////////////////////////////////////////////////////////////// // Type modifier for message handlers...
UPDATE_COMMAND_UI(2KB)<END><br>22,29.zip Inserting a CFormView into a CPropertySheet 将CFormView插入到属性页中(2KB)<END><br>23,30.zip Using Upper- and Lowercase shortcut Keys for Property ...