02消息与消息处理.ppt_第1页
02消息与消息处理.ppt_第2页
02消息与消息处理.ppt_第3页
02消息与消息处理.ppt_第4页
02消息与消息处理.ppt_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、消息映射与消息处理,Visual C+程序设计教程,2,2 消息映射与消息处理,Windows消息主要有3种类型,即标准Windows消息、控件消息和命令消息。 1标准Windows消息 除WM_COMMAND以外,所有以“WM_”为前缀的消息都是标准Windows消息。例如,WM_SIZE(改变窗口大小消息)、WM_MOVE(移动窗口消息) 标准的Windows消息由窗口类或视图类处理。都有默认的处理函数,在CWnd类中定义了标准Windows消息的默认处理函数,这些函数声明部分的前面有关键字“afx_msg”。,2.1 消息的类别及其描述,3,标准的Windows消息又分为3类: 键盘消息

2、、鼠标消息和窗口消息。 (1) 键盘消息 键盘消息与键盘某个键的动作相关联。 l WM_KEYDOWN、WM_KEYUP:按下、释放非系统键产生的消息。 l WM_CHAR:输入非系统字符时产生的消息。,对于WM_CHAR消息,系统定义的消息处理函数是OnChar,其函数原型为: afx_msg void OnChar(UINT nChar,UINT nRepCnt,UINT nFlags);,4,(2) 鼠标消息 鼠标消息涉及到鼠标的单击、双击、拖动等。常用的鼠标消息有以下几种。 l WM_MOUSEMOVE:鼠标移动时产生的消息。 l WM_RBUTTONDOWN:鼠标右键按下时产生的消息

3、。 l WM_LBUTTONDOWN:鼠标左键按下时产生的消息。 l WM_LBUTTONDBLCLICK:鼠标双击时产生的消息。 afx_msg void OnLButtonUp(UINT nFlags,CPoint point);,5,(3) 窗口消息 窗口消息一般与创建窗口、绘制窗口、移动窗口和销毁窗口等动作有关。在MFC应用程序中,窗口消息是由视图类、窗口类及它们的派生类处理的。 WM_PAINT WM_TIMER,6,2.控件消息 控件消息是指控件或子窗口向父窗口发送的WM_COMMAND消息。如:当文本控件内的文本被改变,该控件将发送一条含有EN_CHANGE控件通知码的WM_CO

4、MMAND消息到父窗口。 3.命令消息 命令消息是由菜单项、工具栏按钮、快捷键等用户界面对象发出的WM_COMMAND消息。由消息中包含的标识来决定由哪些特定的对象来处理该消息。,7,消息的处理是通过专门的消息处理函数来执行的,消息处理函数通常是一个类的成员函数,消息处理函数的编写是VC+中MFC编程的重点。,8,2.2 MFC消息映射机制,MFC采用消息映射来处理消息。这种消息映射机制包括一组消息映射宏,用于把一个Windows消息和其消息处理函数联系起来。MFC应用程序框架提供了消息映射功能,所有从CCmdTarget类派生出来的类都能够拥有自己的消息映射。 与MFC消息映射机制有关的宏有

5、以下3个:DECLARE_MESSAGE_MAP( )宏、BEGIN_MESSAGE_MAP(MyClass, MybaseClass)宏和END_MESSAGE_MAP( )宏。,9,为了使用消息映射宏,首先在类定义的结尾用DECLARE_MESSAGE_MAP( )宏来声明使用消息映射,该宏表示在为各个处理函数所写的类声明之后存在消息映射条目,这些函数是该类的成员函数。 然后在类的实现源文件中用BEGIN_MESSAGE_MAP( )和END_MESSAGE_MAP( )宏来定义消息映射。MFC应用程序MESSAG_MAP消息映射的形式如下所示:,10,BEGIN_MESSAGE_MAP(

6、the class, the base class) / AFX_MSG_MAP (MyClass)/ClassWizard维护消息映射宏的标记 ON_. /MFC预定义消息映射宏 ON_MESSAGE(message, memberFun) /用户自定义消息映射宏 / AFX_MSG_MAP END_MESSAGE_MAP(),11,【例2.2】 利用ClassWizard为例2.1中生成的应用程序Li2_1添加鼠标右键按下消息,即WM_RBUTTONDOWN消息,并为File菜单下的Open菜单项添加消息处理函数,分析ClassWizard类向导所进行的消息映射。,/文件Li2_1View

7、.h . DECLARE_MESSAGE_MAP( ) . /文件Li2_1View.cpp . BEGIN_MESSAGE_MAP(CLi2_1View, CView) /AFX_MSG_MAP(CLi2_1View) ON_WM_RBUTTONDOWN() ON_COMMAND(ID_FILE_OPEN, OnFileOpen) /AFX_MSG_MAP / Standard printing commands ON_COMMAND(ID_FILE_PRINT, CView:OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:OnFilePrintPreview) END_MESSAGE_MAP() .,12,表2-5消息映射宏格式,13,2.3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论