消息映射
消息的传递与发送是windows应用程序的核心所在,任何事件的触发与响应均要通过消息的作用才能得以完成。在sdk编程中,对消息的获取与分发主要是通过消息循环来完成的,而在mfc编程中则是通过采取消息映射的方式对其进行处理的。相比而言,这样的处理方式要简单许多,这也是符合面向对象编程中尽可能隐含实现细节的原则。
一个完整的mfc消息映射包括对消息处理函数的原型声明、实现以及存在于消息映射中的消息入口。这几部分分别存在与类的头文件和实现文件中。一般情况下除了对自定义消息的响应外,对于标准windows 消息的映射处理可以借助classwizard向导来完成。
在选定了待处理的windows 消息后,向导将会根据消息的不同而生成具有相应函数参数和返回值的消息处理代码框架。下面这段代码给出了一个完成的mfc消息映射过程:
| // 在.h文件中的声明 //{{afx_msg(cmessagemapview) afx_msg void onmove(int x, int y); //}}afx_msg declare_message_map() …… // 在.cpp文件中的实现 begin_message_map(cmessagemapview, cview) //{{afx_msg_map(cmessagemapview) on_wm_move() //}}afx_msg_map end_message_map() …… void cmessagemapview::onmove(int x, int y) { cview::onmove(x, y); // todo: add your message handler code here } |
| 宏名 | 说明 |
| declare_message_map | 在头文件声明源文件中所含有的消息映射 |
| begin_message_map | 标记源文件消息映射的开始 |
| end_message_map | 标记源文件消息映射的结束 |
| on_command | 将特定命令的处理委派给类的一个成员函数 |
| on_control | 映射一个函数到一个定制控制通知消息。其中,定制控制通知消息是从一个控制发送到其父窗口的消息。 |
| on_control_range | 将一个控制id的范围映射到一个消息处理函数 |
| on_control_reflect | 映射一个由父窗口反射回控制的通知消息 |
| on_message | 将一个用户自定义消息映射到一消息处理函数 |
| on_notify | 映射一个控制消息到一个函数 |
| on_notify_range | 映射一个控制id范围内的控制消息到一个函数 |
| on_notify_ex | 映射一个控制消息到一个函数,该成员函数返回false或true来表明通知是否应被传送到下一个对象以进行其他反应。 |
| on_notify_ex_range | 映射一个控制id范围内的控制消息到一个函数,该成员函数返回false或true来表明通知是否应被传送到下一个对象以进行其他反应 |
| on_notify_reflect | 映射一个控制消息到一个函数。该消息将会被控制的父窗口反射回来。 |
| on_registered_message | 映射一个唯一的消息到一个将要处理该注册消息的函数上。该消息是由registerwindowmessage()函数注册的。 |
| on_update_command_ui | 映射一个函数来处理一个用户接口更新命令消息 |
| on_update_command_ui_range | 映射一个命令id的范围到一个更新消息处理函数 |
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器