WEB开发网
开发学院软件开发VC MFC教程(4)-- 消息映射的实现(2) 阅读

MFC教程(4)-- 消息映射的实现(2)

 2010-03-25 20:33:48 来源:WEB开发网   
核心提示:对更新命令的接收和处理用户接口对象如菜单、工具条有多种状态,例如:禁止,MFC教程(4)-- 消息映射的实现(2)(13),可用,选中,使用pCmdUI对象和CmdUI的成员函数实现菜单项ID_EDIT_COPY的状态更新,让它变灰或者变亮,未选中,等等

对更新命令的接收和处理

用户接口对象如菜单、工具条有多种状态,例如:禁止,可用,选中,未选中,等等。这些状态随着运行条件的变化,由程序来进行更新。虽然程序员可以自己来完成更新,但是MFC框架为自动更新用户接口对象提供了一个方便的接口,使用它对程序员来说可能是一个好的选择。

实现方法

每一个用户接口对象,如菜单、工具条、控制窗口的子窗口,都由唯一的ID号标识,用户和它们交互时,产生相应ID号的命令消息。在MFC里,一个用户接口对象还可以响应CN_UPDATE_COMMAND_UI通知消息。因此,对每个标号ID的接口对象,可以有两个处理函数:一个消息处理函数用来处理该对象产生的命令消息ID,另一个状态更新函数用来处理给该对象的CN_UPDATE_COMMAND_UID的通知消息。

使用ClassWizard可把状态更新函数加入到某个消息处理类,其结果是:

在类的定义中声明一个状态函数;

在消息映射中使用ON_UPDATE_COMMAND_UI宏添加一个映射条目;

在类的实现文件中实现状态更新函数的定义。

ON_UPDATE_COMMAND_UI给指定ID的用户对象指定状态更新函数,例如:

ON_UPDATE_COMMAND_UI(ID_EDIT_COPY, OnUpdateEditCopy)

映射标识号ID为ID_EDIT_COPY菜单的通知消息CN_UPDATE_COMMAND_UI到函数OnUpdateEditCopy。用于给EDIT(编辑菜单)的菜单项ID_EDIT_COPY(复制)添加一个状态处理函数OnUpdateEditCopy,通过处理通知消息CN_UPDATE_COMMAND_UI实现该菜单项的状态更新。

状态处理函数的原型如下:

afxmsg void ClassName::OnUpdateEditPaste(CCmdUI* pCmdUI)

CCmdUI对象由MFC自动地构造。在完善函数的实现时,使用pCmdUI对象和CmdUI的成员函数实现菜单项ID_EDIT_COPY的状态更新,让它变灰或者变亮,也就是禁止或者允许用户使用该菜单项。

上一页  8 9 10 11 12 13 14 15 16 17  下一页

Tags:MFC 教程 消息

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接