欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    MFC消息映射.docx

    • 资源ID:4323956       资源大小:19.21KB        全文页数:9页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    MFC消息映射.docx

    1、MFC消息映射所有windows应用程序都是消息驱动的,消息处理是所有windows应用程序的核心部分。当用户单击鼠标或改变窗口大小时,都将给适当的窗口发送消息。每个消息都对应于某个特定的事件。一、消息处理和消息映射的概念1、消息消息主要指由用户操作而向应用程序发出的信息,也包括操作系统内部产生的消息。例如,单击鼠标左按钮,windows将产WM_LBUTTONDOWN消息,而释放鼠标左按钮将产生WM_LBUTTONUP消息,按下键盘上的字母键,将产生WM_CHAR消息。2、windows消息组成结构windows消息由消息号和参数组成:消息号windows操作系统通过32整数标识一条wind

    2、ows消息,称为消息号。windows消息号具有三个特点:(1)唯一性唯一性指对于windows操作系统中的每一条消息都有一个且只有一个消息号与它相对应。由于windows操作系统通过消息激活相应的过程,因此消息的标识必须是唯一的。(2) 直观性消息号在形式上表现为消息名,消息名往住直观地说明了消息的产生方式和类型,例如消息名WM_LBUTTONDOWN直观地表示了单击产生的消息。(3)可自定义性windows系统定义了一些消息号和消息名,程序员可以运用这些消息,也可以使用自已定义的窗口的消息。形式如下:#define 消息名 消息号注意,为了不与现有的windows系统消息相冲突,在消息号的

    3、定义中通常采用如下:WM_USER+n WM_USER是windows操作系统定义的用户消息起始值,程序员必须从该起始值后选取消息号,例如自定义消息名为“MESSAGE_1”和 “MESSAGE_2”,可采用如下形式:#define MESSAGE_1 WM_USER+1#DEFINE MESSAGE_2 WM_USER+2参 数windows的消息具有以下两个参数:(1)字参数(wParam)(2)长参数(lParam)字参数和长参数都是32位整数,用于提供消息的附带消息,是消息传递过程中参数的载体。附加信息的消息号取决于消息号。3、消息处理在MFC中,每个专门的处理函数旱单独处理每个消息。

    4、消息处理函数通常是某一类的成员函数,编写消息处理函数是编写框架应用程序的主要任务。可以使用ClassWizard创建消息处事函数,然后从Classwizard直接跳到源文件消息处理函数,编写处理代码。4、消息映射可以接收消息和命令的所有框架类都有自已的消息映射。框架利用消息映射把消息、命令与它们的处理函数链接起来。从CCmdTarget类派生的任何类都可以有消息映射。虽然叫作“消息映射”,但消息映射既可以处理消息,也可以处理命令。二、消息种类消息主要有三种类型,即windows消息,命令消息和控件通知。按消息的产生可以分为四类:*(1)外界输入事件产生的消息*(2)windows系统向应用程序

    5、发出的消息*(3)应用程序之间发送的消息*(4)其他根据产生消息的对象,可以进一步将消息分为以下几类:*(1)窗口管理消息包括激活基本窗口操作的消息,如关闭、最大化等。*(2)初始化消息应用程序、窗口、控件等对象初始化的消息。*(3)输入消息包括键盘、鼠标、绘图仪等处部输入工具的输入消息。*(4)系统消息windows系统内部消息。*(5)剪贴板消息操作剪贴板时产生的消息。*(6)系统信息消息用于系统信息发送和处理的消息。*(7)控件处理消息操作控件时产生的消息。*(8)控件通知消息系统采用空件通知消息向控件发送消息。*(9)滚动条消息操作滚动条时产生的消息*(10)非用户区消息非用户区产生的

    6、消息*(11)MDI消息用于多文档操作的消息*(12)DDE消息用于动态数据交换的消息。*(13)应用程序自定义的消息等等。1、windows消息除WM_COMMAND外,所有以WM_开头的消息都是windows消息。windows消息由窗口和视图处理。这类消息通常含有用于确定如何对消息进行处理的一些参数。2、控件消息控件通知包含从控件和其他子窗口传递给父窗口的WM_COMMAND通知消息。例如,当用户改变编辑控件中的文本时,编辑控件将发送给父窗(例如对话框)一条含有EN_EXCHANGE控件通知码的WM_COMMAND消息。窗口的消息处理函数将以适当的方式对通知消息作出响应,如获取编辑框中的

    7、文本等。像其他标准windows消息一样,控件通知消息由窗口和视图进行处理。但是如果用户单击控件按钮时发出的BN_CLICKED控件通知消息将作为命令消息来处理。3、命令消息命令消息包括来自用户界面对象的WM_COMMAND通知消息。菜单项、工具栏按钮和加速键都是可以产生命令的用户界面对象。每个这样的对象都有一个 ID。通过给对象和命令分配给同一个ID可以把用户界面对象和命令联系起来。命令是被作为特殊的消息来处理的。通常,命令ID是以其表示的用户界面对象的功能来命名的。例如,Edit菜单中的Copy命令就可以用ID_EDIT_COPY来表示。MFC类库预定义了某些命令ID(如ID_EDIT_P

    8、ASTE和ID_FILE_OPEN等等)。其他命令ID则要编程人员自已定义,所有预定义命令ID的列表,参见 AFXRES.H文件。命令消息的处理和其他消息的处理不同。命令消息可以被更广泛的对象(如文档、文档模板、应用程序对象、窗口和视图等)处理。windows把命令发送给多个候选对象,称为命令目标。通常其中一个对象有针对该命令的处理函数。处理函数处理命令的方法和处理windows消息的方法是一样的。但调用机制不一样。三、常用消息windows中一些常用的消息:1、WM_LBUTTONDOWN产生:单击。参数:wParam:包含一个整数值,以标识鼠标键的按下状态。鼠标的按下标识及说明数值 说明M

    9、K_LBUTTON 标识按下鼠标左键MK_MBUTTON 标识按下鼠标中键MK_RBUTTON 标识按下鼠标右键lParam:长参数lParam的低字位包含当前坐标的x坐标,在高字节包含当前坐标的Y坐标。相似的消息有:WM_LBUTTONUPWM_RBUTTONDOWNWM_RBUTTONUPWM_LBUTTONDBLCLKWM_RBUTTONDBLCLK2、WM_KEYDOWN产生:按下一个非系统键的时候产生该事件,系统键是指实现系统操作的组合键,例如,Alt与某个功能键的组合以实现菜单操作等。参数:wParam:按下键的虚拟键盘码,虚拟键码用来标识按下或者释放的是哪个键,例如功能键F1的虚

    10、拟键码在windows.h文件中定义为VK_F1。lParam:长参数中记录了按键的重复次数,扫描码、转移代码、先前键的状态等信息。相似的消息有:WM_KEYUP:放开按下的非系统键时产生的事件。3、WM_CHAR产生:按一个非系统键时产生。参数:wParam:所按下的键的ASCII码。lParam:长参数中记录了按键的重复次数,扫描码、转移代码、先前键的状态等信息。4、WM_CREATE产生:由CreateWindow函数发出,创建窗口。参数:wParam:没用。lParam:包含一个指向CREATESTRUCT数据结构的指针,该结构是传递给CreateWindow函数的参数的副本。5、WM

    11、_CLOSE产生:当关闭当前窗口时产生。参数:wParam:未用。lParam:未用。6、WM_DESTROY产生:当窗口要销毁时由DestroyWindow函数发出。参数:wParam:没用到。lParam:没用到。7、WM_QUIT产生:退出应用程序时由PostQuitMessage函数发出。参数:wParam:含有退出代码,退出代码标识应用程序退出运行时的有关信息。lParam:未用。8、WM_COMMAND产生:用户与窗口或控件交互时,控件向其窗口发送WM_COMMAND消息。该消息的wParam参数的低字节中包含子窗口(控件)的标识值ID,高字节中包含子窗口向父窗口发出的通知代码,l

    12、Param参数中包含控件子窗口句柄。9、WM_PAINT用户改变窗口大小或拖动窗口,系统向应用程序发送WM_PAINT消息,WM_PAINT消息调用BeginPaint函数。四、消息处理函数1、windows消息和控件通知的处理函数windows消息和控件通知都是由派生于CWnd的窗口类对象处理的。它们包括CFrameWnd、CMDIFrameWnd、 CMDIChildWnd、CView、CDialog以及从这些派生的用户自定义的类。这样的类对象封装了windows窗口句柄HWND。windows消息和控件通知都有默认的处理函数,这些函数在CWnd类中进行了预定义,MFC类库以消息名为基础形

    13、成这些处理函数的名称,这些处理函数的名称都以前缀On开始。有的处理函数不带参数,有的则有几个参数;有的还有除void以外的返回值类型。CWnd中消息处理函数的说明都有 afx_msg前缀。关键字afx_msg用于把处理函数和其他CWnd成员函数区分开来。例如,消息WM_PAINT的处理函数在CWnd中被声明成:afx_msg void OnPaint();windows消息常见的有鼠标消息(如WM_LBUTTONDOWN)消息)、键盘字符消息(WM_CHAR消息)、键盘按键消息(WM_KEYDOWN)、窗口重画消息WM_PAINT,水平和垂直条滚动消息WM_HSCROLL和WM_VSCROLL

    14、)以及系统时钟消息 WM_TIMER等。2、命令消息的处理函数由于用户界面的对象是用户自已定义的,每个应用程序的用户界面对象千差万别,所以对用户界面对象的命令消息没有默认的处理函数。如果某条命令直接影响某个对象,则应该让这个对象来处理这条命令。例如FILE菜单上的Open命令当然与应用程序有关:应用程序打开一个特定的文档来响应该命令。报以,Open 命令的处理函数是应用程序类的一个成员函数。把命令消息映射成处理函数时,ClassWizard以命令ID来命名处理函数,可以接受、修改、或替换推荐使用的名字。例如,Edit菜单项的Cut命令,对应ID就是ID_EDIT_CUT,处理函数被命名成:af

    15、x_msg void OnEditCut();此外,对于控件按钮的BN_CLICKED通知消息,其处理函数可以被命名为:afx_msg void OnClickedUseAsDefault();命令消息的处理函数没有参数值,也不返回值。五、消息映射用MFC Application Wizard 创建应用程序框架时,AppWizard为创建的每个命令目标类(包括派生的应用程序对象、文档、视图、和边框窗口等)编写一个消息映射。每个命令目标类的消息映射存在相应的.cpp文件中。可以在AppWizard创建的基本消息映射的基础上,使用ClassWizard为每个类将处理的消息和命令添加一些条目。例如,

    16、对于应用程序类,MFC AppWizard创建的基本消息映射为:BEGIN_MESSAGE_MAP(CTextEditApp,CWinApp)/AFX_MSG_MAP(CTextEditApp)ON_COMMAND(ID_APP_ABOUT,OnAppAbout)/注:ClassWizard将在此处添加和删除消息映射宏/不要编辑这些生成的代码块/AFX_MSG_MAP/基于标准文件的文档命令(新建和打开)ON_COMMAND(ID_FILE_NEW,CWinApp:OnFileNew)ON_COMMAND(ID_FILE_OPEN,CWinApp:OnFileOpen)/标准的打印设置命令ON

    17、_COMMAND(ID_FILE_PRINT_SETUP,CWinApp:OnFilePrintSetup)END_MESSAGE_MAP()1、WM_LBUTTONDOWN产生:单击。参数:wParam:包含一个整数值,以标识鼠标键的按下状态。鼠标的按下标识及说明数值 说明MK_LBUTTON 标识按下鼠标左键MK_MBUTTON 标识按下鼠标中键MK_RBUTTON 标识按下鼠标右键lParam:长参数lParam的低字位包含当前坐标的x坐标,在高字节包含当前坐标的Y坐标。相似的消息有:WM_LBUTTONUPWM_RBUTTONDOWNWM_RBUTTONUPWM_LBUTTONDBLC

    18、LKWM_RBUTTONDBLCLK2、WM_KEYDOWN产生:按下一个非系统键的时候产生该事件,系统键是指实现系统操作的组合键,例如,Alt与某个功能键的组合以实现菜单操作等。参数:wParam:按下键的虚拟键盘码,虚拟键码用来标识按下或者释放的是哪个键,例如功能键F1的虚拟键码在windows.h文件中定义为VK_F1。lParam:长参数中记录了按键的重复次数,扫描码、转移代码、先前键的状态等信息。相似的消息有:WM_KEYUP:放开按下的非系统键时产生的事件。3、WM_CHAR产生:按一个非系统键时产生。参数:wParam:所按下的键的ASCII码。lParam:长参数中记录了按键的

    19、重复次数,扫描码、转移代码、先前键的状态等信息。4、WM_CREATE产生:由CreateWindow函数发出,创建窗口。参数:wParam:没用。lParam:包含一个指向CREATESTRUCT数据结构的指针,该结构是传递给CreateWindow函数的参数的副本。5、WM_CLOSE产生:当关闭当前窗口时产生。参数:wParam:未用。lParam:未用。6、WM_DESTROY产生:当窗口要销毁时由DestroyWindow函数发出。参数:wParam:没用到。lParam:没用到。7、WM_QUIT产生:退出应用程序时由PostQuitMessage函数发出。参数:wParam:含有退出代码,退出代码标识应用程序退出运行时的有关信息。lParam:未用。8、WM_COMMAND产生:用户与窗口或控件交互时,控件向其窗口发送WM_COMMAND消息。该消息的wParam参数的低字节中包含子窗口(控件)的标识值ID,高字节中包含子窗口向父窗口发出的通知代码,lParam参数中包含控件子窗口句柄。9、WM_PAINT用户改变窗口大小或拖动窗口,系统向应用程序发送WM_PAINT消息,WM_PAINT消息调用BeginPaint函数。


    注意事项

    本文(MFC消息映射.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开