资源预览内容
第1页 / 共2页
第2页 / 共2页
亲,该文档总共2页全部预览完了,如果喜欢就下载吧!
资源描述
UPDATE_COMMAND_UI :处理菜单对应的用户界面COMMAND:处理该菜单对应的功能传统SDK程序;要改变选单命令项状态,可以呼叫EnableMenuItem或CheckMe nuItem,但这使得程序杂乱无章,因为没有固定的原则处理命令项状态。MFC提供解决这个问题,这就是UPDATE_COMMAND_UI讯息。其设计理念是,每当选 择地菜单项尚未显示之前,其命令项(以及对应之工具栏按钮)都会收到 UPDATE_COMMAND_UI讯息,程序员便可决定如何显示命令项。(选摘自深入浅出MFC第9章)1用户接口更新原理为了理解用户接口更新机制,我们来看一下应用框架是如何实现用户接口更新的。当我们选择Edit菜 单时,将产生一条WM_INITMENUPOPUP消息。框架的更新机制将在菜单拉下之前集体更新所有的项, 然后再显示该菜单。为了更新所有的菜单项,应用框架按标准的命令发送路线把该弹出式菜单中的所有菜单项的更新命令 都发送出去。通过匹配命令和适当的消息映射条目(形式为ON_UPDATE_COMMAND_UI),并调用相 应的更新处理器函数,就可以更新任何菜单项。比如,Edit菜单下有Undo、Cut、Copy、Paste等四个 菜单项,就要发送四条用户接口更新命令。如果菜单项的命令ID有一个更新处理器,它就会被调用进行 更新;如果不存在,则框架检查该命令ID的处理函数是否存在,并根据需要使菜单有效或无效。如果在命令发送期间找不到对应于该命令的ON_UPDATE_COMMAND_UI项,那么框架就检查是否 存在一个命令的ON_COMMAND项,如果存在,则使该菜单有效,否则就使该菜单无效(灰化)这种更 新机制仅适用于弹出式菜单,对于顶层菜单象File和Edit菜单,就不能使用这种更新机制。按钮的命令更新机制与菜单的命令接口更新机制类似,只是工具条按钮的命令接口更新在空闲循环时 完成。2用户接口更新机制编程当框架给处理函数发送更新命令时,它给处理函数传递一个指向CCmdUI对象的指针。这个对象包 含了相应的菜单项或工具条按钮的指针。更新处理函数利用该指针调用菜单项或工具条的命令接口函数来 更新用户接口对象(包括灰化,使能,使不能,选中菜单项和工具条按钮等)。要根据某个状态开关菜单,为菜单生成命令接口更新成员函数。比如,在Edit菜单中,如果当前剪贴板没 有内容,Paste(粘贴)菜单应当设为无效,程序可以这么写:void CMainF rame:OnUpdateEditPaste(CCmdUI* pCmdUI)pCmdUI-Enable(!IsClipboa rdEmpty();其中IsClipboardEmtpy()是读者自己编写的函数,用于判断剪贴板中是否有内容.
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号