- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
了解VC消息映射与命令通知【DOC精选】
了解VC++消息映射与命令通知
作者:未知 文章来源:网络
站长评论:本问是一篇不错的VC开发技术入门文章 通过这篇文章您应该可以对WINDOWS编程中的消息有一定的了解!
?
消息映射 消息的传递与发送是Windows应用程序的核心所在,任何事件的触发与响应均要通过消息的作用才能得以完成。在SDK编程中,对消息的获取与分发主要是通过消息循环来完成的,而在MFC编程中则是通过采取消息映射的方式对其进行处理的。相比而言,这样的处理方式要简单许多,这也是符合面向对象编程中尽可能隐含实现细节的原则。 一个完整的MFC消息映射包括对消息处理函数的原型声明、实现以及存在于消息映射中的消息入口。这几部分分别存在与类的头文件和实现文件中。一般情况下除了对自定义消息的响应外,对于标准Windows 消息的映射处理可以借助ClassWizard向导来完成。 在选定了待处理的Windows 消息后,向导将会根据消息的不同而生成具有相应函数参数和返回值的消息处理代码框架。下面这段代码给出了一个完成的MFC消息映射过程:
// 在.h文件中的声明//{{AFX_MSG(CMessageMapView)afx_msg void OnMove(int x, int y);//}}AFX_MSGDECLARE_MESSAGE_MAP()……// 在.cpp文件中的实现BEGIN_MESSAGE_MAP(CMessageMapView, CView)//{{AFX_MSG_MAP(CMessageMapView)ON_WM_MOVE()//}}AFX_MSG_MAPEND_MESSAGE_MAP()……void CMessageMapView::OnMove(int x, int y)?{CView::OnMove(x, y);// TODO: Add your message handler code here} 这里对Windows标准消息WM_MOVE做了消息映射,其中用到的BEGIN_MESSAGE_MAP、END_MESSAGE_MAP和头文件中的DECLARE_MESSAGE_MAP等均是用于消息映射的宏。这些宏声明了在应用程序框架中可用于在系统中浏览所有对象映射的成员变量和函数。除了以上三个比较常见的宏之外,MFC还提供了其他一些用于消息映射的宏,详情可参见下表:
宏名 说明 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的范围到一个更新消息处理函数 一般作为基类使用的CWnd类为Windows消息定义了大量窗口消息的缺省处理函数,这些函数大部分只是简单地调用了Windows的缺省过程,可以在派生类中对其进行重载。但是MFC应用程序框架却并没有象使用普通虚函数那样使用Windows消息处理函数,而是通过宏将指定的消息映射到派生类的成员函数。如果MFC仍象普通虚函数一样对消息响应函数进行处理,那么CWnd类就要为这上百个消息声明虚函数。而C++将为在程序中使用的每一个派生类都
文档评论(0)