第2章 MFC应用程序概述.ppt

上传人:qwe****56 文档编号:70105308 上传时间:2023-01-16 格式:PPT 页数:62 大小:863KB
返回 下载 相关 举报
第2章 MFC应用程序概述.ppt_第1页
第1页 / 共62页
第2章 MFC应用程序概述.ppt_第2页
第2页 / 共62页
点击查看更多>>
资源描述

《第2章 MFC应用程序概述.ppt》由会员分享,可在线阅读,更多相关《第2章 MFC应用程序概述.ppt(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第 2 2 章章 MFCMFC应用程序概述应用程序概述 2.1 Windows应用程序概述 2.2 MFC应用程序框架 2.3 消息映射与消息处理 2.4 程序调试 2.5 应用实例Visual C+Visual C+程序设计与应用教程程序设计与应用教程1Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 2.1Windows应用程序概述应用程序概述 WindowsWindows应应用用程程序序运运行行于于WindowsWindows操操作作系系统统上上,与与DOSDOS应用程序有着本质的区别。应用程序有着本质的区别。所所有有的的Win

2、dowsWindows应应用用程程序序都都是是由由消消息息驱驱动动的的,消消息处理是所有息处理是所有WindowsWindows应用程序的核心。应用程序的核心。2Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 2.1.1 2.1.1 窗口窗口 窗窗口口是是用用户户界界面面中中最最重重要要的的部部分分。它它是是屏屏幕幕上上与与一一个个应应用用程程序序相相对对应应的的矩矩形形区区域域,是是用用户户与与产生该窗口的应用程序之间的可视界面产生该窗口的应用程序之间的可视界面。3Visual C+程序设计与应用教程15-Jan-23第第2 2章章

3、 MFCMFC应用程序概述应用程序概述 2.1.2消息和事件消息和事件Windows是是 一一 个个 基基 于于 事事 件件 的的 消消 息息 驱驱 动动 系系 统统,Windows应应用用程程序序是是按按照照“事事件件消消息息处处理理”非非顺顺序序的机制运行的。的机制运行的。所所谓谓消消息息,就就是是用用于于描描述述某某个个事事件件发发生生的的信信息息,而而事事件件是是对对于于Windows的的某某种种操操作作。事事件件是是因因,消消息息是是果果,事件产生消息,消息对应事件。事件产生消息,消息对应事件。所所谓谓消消息息的的处处理理,其其实实质质就就是是事事件件的的处处理理。当当有有某某个个事

4、事件件(如如单单击击鼠鼠标标、键键盘盘输输入入和和执执行行菜菜单单命命令令等等)发发生生时时,Windows会会根根据据具具体体的的事事件件产产生生对对应应的的消消息息,并并发发送送到到指指定定应应用用程程序序的的消消息息队队列列。应应用用程程序序从从消消息息队队列列中中取取出出消消息,并根据不同的消息进行不同的处理。息,并根据不同的消息进行不同的处理。4Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 2.1.3基本数据类型基本数据类型Windows编程中常用的基本数据类型的别名编程中常用的基本数据类型的别名。5Visual C+程序

5、设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 6Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 2.1.4句柄句柄句句柄柄是是Windows编编程程的的基基础础,所所谓谓句句柄柄就就是是Windows使用的一种无重复整数使用的一种无重复整数。句句柄柄主主要要用用来来标标识识应应用用程程序序中中的的一一个个对对象象,如如窗窗口口、实例、菜单、内存、输出设备、控制或文件等实例、菜单、内存、输出设备、控制或文件等。Windows常见的公用句柄类型如下表所示:常见的公用句柄类型如下表所示:7Visual

6、 C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 8Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 由于对应的由于对应的MFCMFC类已对句柄进行类已对句柄进行了封装,大多数了封装,大多数情况下不再需要情况下不再需要访问句柄。访问句柄。9Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 2.2 MFC2.2 MFC应用程序框架应用程序框架下下面面通通过过一一个个实实例例介介绍绍利利用用MFCAppWizardexe创建应用程序框架的

7、步骤。创建应用程序框架的步骤。2.2.1创建创建MFC应用程序框架应用程序框架10Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 【例例2.12.1】编编写写一一个个SDISDI单单文文档档应应用用程程序序Li2_1Li2_1,程程序序运运行行后后,通过消息框输出通过消息框输出“这是一个单文档应用程序!这是一个单文档应用程序!”的提示信息。的提示信息。(1)选择File菜单下的New菜单项,系统弹出New对话框。单击单击输入输入工程名保存文件路径默认默认11Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCM

8、FC应用程序概述应用程序概述 单文档界面单文档界面(SDI)(SDI)应用应用程序。应用程序运行时,程序。应用程序运行时,只能打开一个文档。只能打开一个文档。多文档界面多文档界面(MDI)(MDI)应用应用程序。应用程序可以同程序。应用程序可以同时打开多个文档。时打开多个文档。基于对话框的应用程序。基于对话框的应用程序。应用程序将显示一个简应用程序将显示一个简单的对话框来处理用户单的对话框来处理用户的输入,的输入,(2)(2)MFC MFC AppWizard-Step AppWizard-Step 1 1对对话话框框主主要要用用于于选选择择应应用用程程序序类型。类型。AppWizardApp

9、Wizard可以创建可以创建3 3种类型的应用程序框架。种类型的应用程序框架。语言种类语言种类是否支持是否支持文档文档/视图视图结构结构12Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 (3)MFC(3)MFC AppWizard-Step AppWizard-Step 2 2 of of 6 6对对话话框框中中主主要要用用于于选选择择应用程序所支持数据库方式。应用程序所支持数据库方式。不包含任何数据库支持不包含任何数据库支持包含最低限度的数据库包含最低限度的数据库支持支持创建对应表的一个数据创建对应表的一个数据库类和一个视图类,不

10、库类和一个视图类,不附加标准文件支持附加标准文件支持创建对应表的一个数据创建对应表的一个数据库类和一个视图类,并库类和一个视图类,并附加标准文件支持附加标准文件支持13Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 (4)(4)在在MFC MFC AppWizard-Step AppWizard-Step 3 3 of of 6 6对对话话框框中中选选择择应应用用程程序所支持的复合文档类型序所支持的复合文档类型。不支持任何复合文档不支持任何复合文档应用程序作为复合文档容器,包含应用程序作为复合文档容器,包含可以链接或嵌入的可以链接或嵌

11、入的ActiveXActiveX对象对象应用程序仅仅可以创建能够嵌入到应用程序仅仅可以创建能够嵌入到其他应用程序中的文档,但是不能其他应用程序中的文档,但是不能作为一个单独运行的应用程序作为一个单独运行的应用程序应用程序可以单独运行,同时也可应用程序可以单独运行,同时也可以作为一个对象嵌入到其他应用程以作为一个对象嵌入到其他应用程序中序中应用程序能够作为容器包含嵌入或应用程序能够作为容器包含嵌入或链接的链接的ActiveXActiveX对象,同时也能够作对象,同时也能够作为一个可以嵌入到其他程序中的对为一个可以嵌入到其他程序中的对象象14Visual C+程序设计与应用教程15-Jan-23第

12、第2 2章章 MFCMFC应用程序概述应用程序概述 (5)(5)在在MFC MFC AppWizard-Step AppWizard-Step 4 4 of of 6 6对对话话框框中中设设置置应应用用程程序的外观特征。序的外观特征。添加工具栏添加工具栏自动生成状态栏自动生成状态栏添加打印和打印预览菜单项添加打印和打印预览菜单项在帮助菜单中自动添加索引和在帮助菜单中自动添加索引和使用帮助菜单项使用帮助菜单项使应用程序的外观呈三维显示使应用程序的外观呈三维显示消息应用程序接口消息应用程序接口应用程序具有应用程序具有TCP/IPTCP/IP通信功能通信功能传统风格工具条传统风格工具条Interne

13、t ExplorerInternet Explorer风格工具条风格工具条15Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 (6)(6)在在MFC MFC AppWizard-Step AppWizard-Step 5 5 of of 6 6对对话话框框中中设设置置应应用用程程序序的风格。的风格。创建标准的创建标准的MFCMFC应用程序应用程序创建类似于创建类似于WindowsWindows资源管资源管理器风格的应用程序理器风格的应用程序在生成的程序框架的源文在生成的程序框架的源文件中加入注释件中加入注释不加入注释信息不加入注释信息

14、使用动态链接库使用动态链接库 使用静态链接库使用静态链接库 16Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 (7)(7)在在MFC MFC AppWizard-Step AppWizard-Step 6 6 of of 6 6对对话话框框中中,可可以以设设置向导生成的文件名和类名。置向导生成的文件名和类名。设置类名设置类名设置文件名设置文件名17Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 (8)(8)打打 开开 项项 目目 工工 作作 区区 中中 的的 ClassVi

15、ewClassView类类 视视 图图,单单 击击CLi2_1ViewCLi2_1View类类左左边边的的“+”+”展展开开视视图图类类,双双击击打打开开OnDrawOnDraw()()函数,并添加代码。函数,并添加代码。voidCLi2_1View:OnDraw(CDC*pDC)CLi2_1Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);/TODO:adddrawcodefornativedatahereMessageBox(这是一个单文档应用程序!这是一个单文档应用程序!,消息框消息框,MB_ICONEXCLAMATION|MB_OKCANCEL);18

16、Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 (9)(9)选选择择BuildBuild菜菜单单中中的的Build Build Li2_1.exeLi2_1.exe菜菜单单项项,对对工工程程进进行行编编译译和和链链接接,生生成成可可执执行行文文件件。再再选选择择BuildBuild菜菜单中的单中的Execute Li2_1.exeExecute Li2_1.exe菜单命令运行程序。菜单命令运行程序。19Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 MFCMFC应用程序框架结

17、构类的继承关系:应用程序框架结构类的继承关系:2.2.2MFC应用程序框架结构类应用程序框架结构类20Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 1.CObject1.CObject类类 CObjectCObject是是MFCMFC类类库库的的根根类类,它它几几乎乎描描述述了了所所有有MFCMFC类类的的一一些些公公共共特特性性,并并且且给给所所有有由由它它派派生生出出的的类类提提供供了了3 3种种重重要要特特性性,即即:串串行行化化支支持持、运运行行时时类类信信息支持以及诊断和调试支持。息支持以及诊断和调试支持。2.CCmdTa

18、rget2.CCmdTarget类类 命命令令类类CCmdTargetCCmdTarget是是CObjectCObject的的子子类类,它它是是MFCMFC库库中中所所有有具具有有消消息息映映射射属属性性的的类类的的公公共共基基类类。从从CCmdTargetCCmdTarget派派生生的的类类能能在在程程序序运运行行时时动动态态创创建建对对象象和处理命令消息。和处理命令消息。21Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 3.CWinApp3.CWinApp类类 应应用用程程序序类类CWinAppCWinApp是是CWinThre

19、adCWinThread的的子子类类,封封装装了了初初始始化化、运运行行、终终止止应应用用程程序序的的代代码码。可可以以由此派生自己的应用类。由此派生自己的应用类。4.CWnd4.CWnd类类 窗窗口口类类CWndCWnd提提供供了了MFCMFC中中所所有有窗窗口口类类的的基基本本功功能能。从从CWndCWnd派派生生的的类类可可以以拥拥有有自自己己的的窗窗口口,并并对它进行控制。对它进行控制。22Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 5.CFrameWnd5.CFrameWnd类类 CFrameWndCFrameWnd类类

20、是是CWndCWnd类类的的派派生生类类。它它是是所所有有其其他他框架窗口类的基类,主要用来管理一个窗口。框架窗口类的基类,主要用来管理一个窗口。CFrameWndCFrameWnd类类的的对对象象是是一一个个框框架架窗窗口口,包包括括边边框框、标标题题栏栏、菜菜单单、最最大大化化按按钮钮、最最小小化化按按钮钮和和一一个个激激活活的的视视图图。CFrameWndCFrameWnd类类支支持持单单文文档档界界面面,对对于于多多文文档档界界 面面,使使 用用 它它 的的 两两 个个 派派 生生 类类 CMDIFrameWndCMDIFrameWnd和和CMDIChildWndCMDIChildWn

21、d。CMDIFrameWndCMDIFrameWnd类类用用于于MDIMDI的的主主窗窗口口,CMDIChildWndCMDIChildWnd类用于类用于MDIMDI的子窗口。的子窗口。23Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 6.CView6.CView类类 视视图图类类CViewCView是是CWndCWnd类类的的子子类类。视视图图类类及及其其派派生类用于管理框架窗口的客户区。生类用于管理框架窗口的客户区。7.CDocument7.CDocument类类 文文档档类类CDocumentCDocument负负责责装装载载

22、和和维维护护文文档档。文文档档包包括括应应用用程程序序的的工工作作成成果果或或环环境境设设置置数数据据等等,可可以是程序需要保存的任何内容。以是程序需要保存的任何内容。24Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 一一个个MFCMFC应应用用程程序序并并不不直直接接操操作作上上述述类类,而而是是以以上上述述类类为为基类派生新的类,从而构建基类派生新的类,从而构建WindowsWindows应用程序的基本框架。应用程序的基本框架。例如,应用程序例如,应用程序Li2_1Li2_1中的类与这些基类的派生关系中的类与这些基类的派生关系:

23、25Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 1.1.应用程序向导生成的文件应用程序向导生成的文件 下下面面以以例例2.12.1中中创创建建的的应应用用程程序序Li2_1Li2_1为为例例,介介绍绍MFC AppWizardexeMFC AppWizardexe向导所生成的各类文件及功能。向导所生成的各类文件及功能。2.2.3MFC应用程序分析应用程序分析26Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 (1)头文件与实现文件头文件与实现文件MainFrm.h和和Ma

24、inFrm.cpp:定定义义和和实实现现窗窗口口框框架架类类CMainFrame。CLi2_1Doc.h和和CLi2_1Doc.cpp:定定义义和和实实现现文文档档类类CLi2_1Doc。CLi2_1View.h和和CLi2_1View.cpp:定定义义和和实实现现视视图类图类CLi2_1View。CLi2_1.h和和CLi2_1.cpp:定定义义和和实实现现应应用用程程序序类类CLi2_1App。Resource.h:定定义义工工程程中中所所有有资资源源标标识识符符,给给资资源源ID分配一个整数值。分配一个整数值。StdAfx.h和和StdAfx.cpp:用用于于建建立立一一个个预预编编译译

25、的的头头文文件件CLi2_1.PCH和一个预定义的类型文件和一个预定义的类型文件StdAfx.obj。27Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 (2)资源文件资源文件Li2_1.rc和和Li2_1.rc2:Li2_1.rc文文件件是是程程序序所所使使用用的的所有所有Windows资源的列表。资源的列表。Li2_1.ico:应用程序的图标所使用的图标文件。:应用程序的图标所使用的图标文件。Li2_1Doc.ico:应应用用程程序序的的文文档档图图标标文文件件。文文档档图图标一般显示在多文档程序界面上。标一般显示在多文档程序界面

26、上。Toolbar.bmp:工具栏按钮的位图文件。:工具栏按钮的位图文件。28Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 (3)项目工作区文件和工程文件项目工作区文件和工程文件Li2_1.dsw:保保存存当当前前工工作作区区所所包包含含的的工工程程的的信信息。息。Li2_1.dsp:包包含含当当前前工工程程的的设设置置、工工程程中中的的文文件等信息。件等信息。29Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 (4)其他文件其他文件Li2_1.clw:该该 文文 件件 是

27、是 类类 信信 息息 文文 件件。它它 保保 存存 了了ClassWizard编编辑辑现现有有类类或或增增加加新新类类时时需需使使用用的的类类信信息息,同同时时还还保保存存了了创创建建、编编辑辑消消息息映映射射和和成成员员函函数数所所需的信息。需的信息。ReadMe.txt:该该文文件件是是工工程程自自述述文文件件。主主要要介介绍绍所所创创建建文文件件的的内内容容和和功功能能,以以及及添添加加用用户户代代码码、更更改改使使用语言的方法。用语言的方法。30Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 2.2.应用程序的执行过程应用程序

28、的执行过程 启动启动:创建应用程序对象创建应用程序对象theApptheApp、调用应用程序类的构、调用应用程序类的构造函数初始化对象造函数初始化对象theApptheApp。应用程序框架调用应用程序框架调用MFCMFC提供的提供的AfxWinMainAfxWinMain()()主函数。主函数。AfxWinMainAfxWinMain()()主函数,首先通过调用全局函数主函数,首先通过调用全局函数AfxGetAppAfxGetApp()()来获取来获取theApptheApp的指针的指针pApppApp;然后通过该指针调用然后通过该指针调用theApptheApp的成员函数的成员函数InitI

29、nstanceInitInstance()()来初始化应用程序。来初始化应用程序。31Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 在应用程序的初始化过程中,同时还构造了文在应用程序的初始化过程中,同时还构造了文档模板,产生最初的文档、视图和主框架窗口,并档模板,产生最初的文档、视图和主框架窗口,并生成工具栏和状态栏。生成工具栏和状态栏。当当InitInstanceInitInstance()()函数执行完毕后,函数执行完毕后,WinMainWinMain()()函数将调用成员函数函数将调用成员函数Run()Run(),进入消息处理

30、进入消息处理循环;循环;函数函数Run()Run()收到收到WM_QUITWM_QUIT消息。消息。MFCMFC首先调用首先调用CWinAppCWinApp类的成员函数类的成员函数ExitInstanceExitInstance()();然后调用静态对象的析构函数;然后调用静态对象的析构函数;退出应用程序,将控制权交给操作系统。退出应用程序,将控制权交给操作系统。32Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 消息对话框消息对话框 一种简单的对话框,用户可以直接调用消息对话框函一种简单的对话框,用户可以直接调用消息对话框函数来使用

31、它,而不需要自己创建。数来使用它,而不需要自己创建。Visual C+Visual C+提供提供三个消息三个消息对话框函数对话框函数,它们的原型为:,它们的原型为:intAfxMessageBox(LPCTSTRlpText,UINTnType=MB_OK,UINTnIDHelp=0);intMessageBox(HWNDhWnd,LPCTSTRlpText,LPCTSTRlpCaption,UINTnType);intCWnd:MessageBox(LPCTSTRlpText,LPCTSTRlpCaption=NULL,UINTnType=MB_OK);33Visual C+程序设计与应用教

32、程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 34Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 35Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 2.2.4 文档文档/视图结构视图结构 文档视图体系结构是文档视图体系结构是MFCMFC应用程序框架结构的应用程序框架结构的基石,它定义了基石,它定义了一种程序结构一种程序结构,这种结构利用文档,这种结构利用文档对象保存应用程序的数据,依靠视图对象控制视图对象保存应用程序的数据,依靠视图对象控制视图显

33、示数据,文档与视图的关系是一对多的关系,也显示数据,文档与视图的关系是一对多的关系,也就是说,文档中的数据可以以不同的方式显示。就是说,文档中的数据可以以不同的方式显示。36Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 37Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 2.3消息映射与消息处理消息映射与消息处理 WindowsWindows消消息息主主要要有有3 3种种类类型型:标标准准WindowsWindows消消息息、控件消息和命令消息。控件消息和命令消息。1 1标

34、准标准WindowsWindows消息消息除除WM_COMMANDWM_COMMAND以以外外,所所有有以以“WM_”WM_”为为前前缀缀的的消消息都是标准息都是标准WindowsWindows消息消息;由窗口类或视图类处理由窗口类或视图类处理;都都有有默默认认的的处处理理函函数数,它它们们在在CWndCWnd类类中中进进行行了了预预定义。定义。2.3.1消息的类别及其描述消息的类别及其描述38Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 标准的标准的WindowsWindows消息又分为消息又分为3 3类:类:键盘消息、鼠标消息和

35、窗口消息。键盘消息、鼠标消息和窗口消息。(1)(1)键盘消息键盘消息 键键盘盘消消息息与与键键盘盘某某个个键键的的动动作作相相关关联联。常常见见的的键键盘盘消息有以下几种。消息有以下几种。WM_KEYDOWNWM_KEYDOWN、WM_KEYUPWM_KEYUP:按按下下、释释放放非非系系统统键键产产生生的的消息。消息。WM_CHARWM_CHAR:输入非系统字符时产生的消息。输入非系统字符时产生的消息。39Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 (2)(2)鼠标消息鼠标消息 鼠鼠标标消消息息涉涉及及到到鼠鼠标标的的单单击击、

36、双双击击、拖拖动动等等。常常用用的的鼠标消息有以下几种。鼠标消息有以下几种。WM_MOUSEMOVEWM_MOUSEMOVE:鼠标移动时产生的消息。鼠标移动时产生的消息。WM_RBUTTONDOWNWM_RBUTTONDOWN:鼠标右键按下时产生的消息。鼠标右键按下时产生的消息。WM_LBUTTONDOWNWM_LBUTTONDOWN:鼠标左键按下时产生的消息。鼠标左键按下时产生的消息。WM_LBUTTONDBLCLICKWM_LBUTTONDBLCLICK:鼠标双击时产生的消息。鼠标双击时产生的消息。40Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程

37、序概述应用程序概述 (3)(3)窗口消息窗口消息 窗窗口口消消息息一一般般与与创创建建窗窗口口、绘绘制制窗窗口口、移移动动窗口和销毁窗口等动作有关。窗口和销毁窗口等动作有关。在在MFCMFC应应用用程程序序中中,窗窗口口消消息息是是由由视视图图类类、窗口类及它们的派生类处理的。窗口类及它们的派生类处理的。41Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 2.2.控件消息控件消息 控控件件消消息息是是指指控控件件或或其其他他子子窗窗口口向向父父窗窗口口发发送送的的WM_COMMANDWM_COMMAND消息。消息。与与其其他他标标准准

38、的的WindowsWindows消消息息一一样样,控控件件消消息息也也应应该该在在视视图图类类、窗窗口口类类中中进进行行处处理理。但但是是,如如果果用用户户单单击击按按钮钮控控件件时时,发发出出的的控控件件通通知知消消息息BN_CLICKEDBN_CLICKED将将作作为命令消息来处理。为命令消息来处理。42Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 3.3.命令消息命令消息 命命令令消消息息是是由由菜菜单单项项、工工具具栏栏按按钮钮、快快捷捷键键等等用用户界面对象发出的户界面对象发出的WM_COMMANDWM_COMMAND消息

39、。消息。命命令令消消息息与与其其他他消消息息不不同同,它它可可被被更更广广泛泛的的对对象象如如文文档档、文文档档模模板板、应应用用程程序序对对象象、窗窗口口和和视视图图等等处处理。理。43Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 2.3.2MFC消息映射机制消息映射机制 MFCMFC采用消息映射来处理消息;采用消息映射来处理消息;消消息息映映射射机机制制包包括括一一组组消消息息映映射射宏宏,用用于于把把一一个个WindowsWindows消息和其消息处理函数联系起来。消息和其消息处理函数联系起来。所所有有从从CCmdTarget

40、CCmdTarget类类派派生生出出来来的的类类都都能能够够拥拥有有自自己己的消息映射。的消息映射。与与MFCMFC消息映射机制有关的宏有以下消息映射机制有关的宏有以下3 3个:个:DECLARE_MESSAGE_MAP()DECLARE_MESSAGE_MAP()BEGIN_MESSAGE_MAP(MyClassBEGIN_MESSAGE_MAP(MyClass,MybaseClassMybaseClass)END_MESSAGE_MAP()END_MESSAGE_MAP()44Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 为了使

41、用消息映射宏:为了使用消息映射宏:u首首先先在在类类定定义义的的结结尾尾用用DECLARE_MESSAGE_MAP(DECLARE_MESSAGE_MAP()宏宏来来声声明明使使用用消消息息映映射射,该该宏宏表表示示在在为为各各个个处处理理函函数数所所写写的的类类声声明明之之后后存存在在消消息息映映射射条条目目,这这些些函函数数是该类的成员函数。是该类的成员函数。u然然后后在在类类的的实实现现源源文文件件中中用用BEGIN_MESSAGE_MAP(BEGIN_MESSAGE_MAP()和和END_MESSAGE_MAP()END_MESSAGE_MAP()宏来定义消息映射。宏来定义消息映射。M

42、FCMFC应用程序应用程序MESSAG_MAPMESSAG_MAP消息映射的形式如下:消息映射的形式如下:45Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 BEGIN_MESSAGE_MAP(MyClass,MybaseClass)/AFX_MSG_MAP(MyClass)/ClassWizard维护消息映射宏的标记维护消息映射宏的标记ON_./MFC预定义消息映射宏预定义消息映射宏ON_MESSAGE(message,memberFun)/用户自定义消息映射宏用户自定义消息映射宏/AFX_MSG_MAPEND_MESSAGE_MA

43、P()其中,其中,MyClass是拥有消息映射的派生类名,是拥有消息映射的派生类名,MybaseClass是其基类名。是其基类名。46Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 【例例2.22.2】利利用用ClassWizardClassWizard为为例例2.12.1中中生生成成的的应应用用程程序序Li2_1Li2_1添添加加鼠鼠标标右右键键按按下下消消息息,即即WM_RBUTTONDOWNWM_RBUTTONDOWN消消息息,并并为为FileFile菜菜单单下下的的OpenOpen菜菜单单项项添添加加消消息息处处理理函函数数,

44、分分析析ClassWizardClassWizard类向导所进行的消息映射。类向导所进行的消息映射。47Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 2.3.3自定义消息处理自定义消息处理自自定定义义消消息息处处理理:定定义义消消息息名名、分分配配IDID值值及及完完成成消消息息映射。映射。WindowsWindows将所有的消息值分为将所有的消息值分为4 4段:段:0 x00000 x00000 x03FF0 x03FF段段:用于用于WindowsWindows系统消息系统消息0 x04000 x04000 x7FFF0 x7FF

45、F段段:用于用户自定义的窗口消息用于用户自定义的窗口消息0 x80000 x80000 xBFFF0 xBFFF段段:为为WindowsWindows保留值保留值0 xC0000 xC0000 xFFFF0 xFFFF段段:用于应用程序的字符串消息。用于应用程序的字符串消息。48Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 常常量量WM_USER(WM_USER(为为0 x0400)0 x0400)与与第第一一个个自自定定义义消消息息值值相相对对应应,用用户户必必须须为为自自己己的的消消息息定定义义相相对对于于WM_USERWM_U

46、SER的的偏偏移移值值,利利用用#define#define语句直接定义自己的消息,如下所示:语句直接定义自己的消息,如下所示:#define WM_USER WM_USER+3;/自定义消息自定义消息WM_USER 也也可可以以调调用用窗窗口口消消息息注注册册函函数数RegisterWindowMessageRegisterWindowMessage()来来定定义义一一个个WindowsWindows消消息息,由由系系统统分分配配消消息息一一个个整整数数值值。该该函函数原型为:数原型为:UINT RegisterWindowMessage(LPCTSTR lpString);其其中中参参数数

47、lpStringlpString是是要要定定义义的的消消息息名名,调调用用成成功功后后将将返回该消息的返回该消息的IDID值。值。49Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 【例例2.32.3】编编写写一一个个自自定定义义消消息息应应用用程程序序,并并添添加加WM_RBUTTONDOWNWM_RBUTTONDOWN消消息息。当当程程序序运运行行时时,用用户户在在视视图图窗窗口口中中单单击击鼠鼠标标右右键键,则则调调用用自自定定义义消消息息处处理理函函数数,输输出出文文本本“自定义消息自定义消息WM_MYMESSAGEWM_MY

48、MESSAGE的处理函数被调用!的处理函数被调用!”。50Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 2.4 2.4 程序调试程序调试 程程序序调调试试分分为为源源程程序序语语法法错错误误的的修修改改和和程程序序逻逻辑辑设设计计错错误误的的修修改改两两个个阶阶段段,编编译译器器只只能能找找出出源源程程序序的的语语法法错错误误,程程序序的的逻逻辑辑设设计计错错误误只只能能靠靠程序员利用调试工具来手工检查和修改。程序员利用调试工具来手工检查和修改。51Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应

49、用程序概述应用程序概述 2.4.1 2.4.1 查找源程序中的语法错误查找源程序中的语法错误 语法错误分为语法错误分为:一一般般错错误误(error):(error):出出现现该该错错误误时时将将不不会会产产生生可可执行程序执行程序;警警告告错错误误(warning):(warning):出出现现该该错错误误时时能能够够生生成成可可执执行行程程序序,但但程程序序运运行行时时可可能能发发生生错错误误,严严重重的的warningwarning错误还会引起死机现象。错误还会引起死机现象。52Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程序概述应用程序概述 如

50、果程序有语法错误,则在执行编译、链接命令如果程序有语法错误,则在执行编译、链接命令时,时,Visual C+Visual C+编译器将在输出窗口中给出语法错误编译器将在输出窗口中给出语法错误提示信息,但链接错误提示信息不能给出错误发生的提示信息,但链接错误提示信息不能给出错误发生的具体位置。具体位置。在在输输出出窗窗口口中中双双击击错错误误提提示示信信息息或或按按F4F4键键可可以以返返回回到到源源程程序序编编辑辑窗窗口口,并并通通过过一一个个箭箭头头符符号号定定位位到到产产生错误的语句。生错误的语句。53Visual C+程序设计与应用教程15-Jan-23第第2 2章章 MFCMFC应用程

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁