第2章MFC应用程序概述课件.ppt
《第2章MFC应用程序概述课件.ppt》由会员分享,可在线阅读,更多相关《第2章MFC应用程序概述课件.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 VC+应用编程第第 2 2 章章 MFCMFC应用程序概述应用程序概述 VC+应用编程本章内容 2.2 MFC应用程序框架 2.3 消息映射与消息处理 2.4 程序调试 2.5 应用实例 VC+应用编程2.2 MFC2.2 MFC应用程序框架应用程序框架下下面面通通过过一一个个实实例例介介绍绍利利用用MFCAppWizardexe创建应用程序框架的步骤。创建应用程序框架的步骤。2.2.1创建创建MFC应用程序框架应用程序框架 VC+应用编程【例例2.12.1】编编写写一一个个SDISDI单单文文档档应应用用程程序序Li2_1Li2_1,程程序序运运行行后后,通过消息框输出通过消息框输出“这是
2、一个单文档应用程序!这是一个单文档应用程序!”的提示信息。的提示信息。(1)选择File菜单下的New菜单项,系统弹出New对话框。单击单击输入输入工程名保存文件路径默认默认 VC+应用编程单文档界面单文档界面(SDI)(SDI)应用应用程序。应用程序运行时,程序。应用程序运行时,只能打开一个文档。只能打开一个文档。多文档界面多文档界面(MDI)(MDI)应用应用程序。应用程序可以同程序。应用程序可以同时打开多个文档。时打开多个文档。基于对话框的应用程序。基于对话框的应用程序。应用程序将显示一个简应用程序将显示一个简单的对话框来处理用户单的对话框来处理用户的输入,的输入,(2)(2)MFC M
3、FC AppWizard-Step AppWizard-Step 1 1对对话话框框主主要要用用于于选选择择应应用用程程序序类型。类型。AppWizardAppWizard可以创建可以创建3 3种类型的应用程序框架。种类型的应用程序框架。语言种类语言种类是否支持是否支持文档文档/视图视图结构结构 VC+应用编程(3)MFC(3)MFC AppWizard-Step AppWizard-Step 2 2 of of 6 6对对话话框框中中主主要要用用于于选选择择应用程序所支持数据库方式。应用程序所支持数据库方式。不包含任何数据库支持不包含任何数据库支持包含最低限度的数据库包含最低限度的数据库支持
4、支持创建对应表的一个数据创建对应表的一个数据库类和一个视图类,不库类和一个视图类,不附加标准文件支持附加标准文件支持创建对应表的一个数据创建对应表的一个数据库类和一个视图类,并库类和一个视图类,并附加标准文件支持附加标准文件支持 VC+应用编程(4)(4)在在MFC MFC AppWizard-Step AppWizard-Step 3 3 of of 6 6对对话话框框中中选选择择应应用用程程序所支持的复合文档类型序所支持的复合文档类型。不支持任何复合文档不支持任何复合文档应用程序作为复合文档容器,包含应用程序作为复合文档容器,包含可以链接或嵌入的可以链接或嵌入的ActiveXActiveX
5、对象对象应用程序仅仅可以创建能够嵌入到应用程序仅仅可以创建能够嵌入到其他应用程序中的文档,但是不能其他应用程序中的文档,但是不能作为一个单独运行的应用程序作为一个单独运行的应用程序应用程序可以单独运行,同时也可应用程序可以单独运行,同时也可以作为一个对象嵌入到其他应用程以作为一个对象嵌入到其他应用程序中序中应用程序能够作为容器包含嵌入或应用程序能够作为容器包含嵌入或链接的链接的ActiveXActiveX对象,同时也能够作对象,同时也能够作为一个可以嵌入到其他程序中的对为一个可以嵌入到其他程序中的对象象 VC+应用编程(5)(5)在在MFC MFC AppWizard-Step AppWiza
6、rd-Step 4 4 of of 6 6对对话话框框中中设设置置应应用用程程序的外观特征。序的外观特征。添加工具栏添加工具栏自动生成状态栏自动生成状态栏添加打印和打印预览菜单项添加打印和打印预览菜单项在帮助菜单中自动添加索引和在帮助菜单中自动添加索引和使用帮助菜单项使用帮助菜单项使应用程序的外观呈三维显示使应用程序的外观呈三维显示消息应用程序接口消息应用程序接口应用程序具有应用程序具有TCP/IPTCP/IP通信功能通信功能传统风格工具条传统风格工具条Internet ExplorerInternet Explorer风格工具条风格工具条 VC+应用编程(6)(6)在在MFC MFC App
7、Wizard-Step AppWizard-Step 5 5 of of 6 6对对话话框框中中设设置置应应用用程程序序的风格。的风格。创建标准的创建标准的MFCMFC应用程序应用程序创建类似于创建类似于WindowsWindows资源管资源管理器风格的应用程序理器风格的应用程序在生成的程序框架的源文在生成的程序框架的源文件中加入注释件中加入注释不加入注释信息不加入注释信息使用动态链接库使用动态链接库 使用静态链接库使用静态链接库 VC+应用编程(7)(7)在在MFC MFC AppWizard-Step AppWizard-Step 6 6 of of 6 6对对话话框框中中,可可以以设设置
8、向导生成的文件名和类名。置向导生成的文件名和类名。设置类名设置类名设置文件名设置文件名 VC+应用编程(8)(8)打打 开开 项项 目目 工工 作作 区区 中中 的的 ClassViewClassView类类 视视 图图,单单 击击CLi2_1ViewCLi2_1View类类左左边边的的“+”+”展展开开视视图图类类,双双击击打打开开OnDrawOnDraw()()函数,并添加代码。函数,并添加代码。voidCLi2_1View:OnDraw(CDC*pDC)CLi2_1Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);/TODO:adddrawcodefor
9、nativedatahereMessageBox(这是一个单文档应用程序!这是一个单文档应用程序!,消息框消息框,MB_ICONEXCLAMATION|MB_OKCANCEL);VC+应用编程(9)(9)选选择择BuildBuild菜菜单单中中的的Build Build Li2_1.exeLi2_1.exe菜菜单单项项,对对工工程程进进行行编编译译和和链链接接,生生成成可可执执行行文文件件。再再选选择择BuildBuild菜菜单中的单中的Execute Li2_1.exeExecute Li2_1.exe菜单命令运行程序。菜单命令运行程序。VC+应用编程MFC概述概述 MFCMFC是用来编写是
10、用来编写WindowsWindows应用程序的应用程序的C+C+类集,类集,该类集以层次结构组织起来,其中该类集以层次结构组织起来,其中封装了大部封装了大部分分Windows APIWindows API函数和函数和WindowsWindows控件控件,它所包含,它所包含的功能涉及到整个的功能涉及到整个WindowsWindows操作系统。操作系统。MFCMFC不仅为用户提供了不仅为用户提供了 WindowsWindows图形环境下图形环境下应用程序的框架,而且还提供了创建应用程序应用程序的框架,而且还提供了创建应用程序的组件。的组件。VC+应用编程MFCMFC还很好地保持了程序的向下兼容性还
11、很好地保持了程序的向下兼容性用来编写用来编写WindowsWindows应应用程序的用程序的C+C+类集类集以层次结构组织以层次结构组织封装了大部分封装了大部分APIAPI函数函数提供了图形环境下应用程序的框架提供了图形环境下应用程序的框架提供了创建应用程序的组件提供了创建应用程序的组件提供了大量的基类供程序员根据不同的应用环境进行扩充提供了大量的基类供程序员根据不同的应用环境进行扩充允许在编程过程中自定义和扩展应用程序中的类允许在编程过程中自定义和扩展应用程序中的类较好的移植性,较好的移植性,可移植于众多的平台可移植于众多的平台MFCMFC VC+应用编程MFCMFC应用程序框架结构类的继承
12、关系:应用程序框架结构类的继承关系:2.2.2MFC应用程序框架结构类应用程序框架结构类 VC+应用编程1.CObject1.CObject类类 CObjectCObject是是MFCMFC类类库库的的根根类类,它它几几乎乎描描述述了了所所有有MFCMFC类类的的一一些些公公共共特特性性,并并且且给给所所有有由由它它派派生生出出的的类类提提供供了了3 3种种重重要要特特性性,即即:串串行行化化支支持持、运运行行时时类类信信息支持息支持以及以及诊断和调试支持诊断和调试支持。2.CCmdTarget2.CCmdTarget类类 命命令令类类CCmdTargetCCmdTarget是是CObject
13、CObject的的子子类类,它它是是MFCMFC库库中中所所有有具具有有消消息息映映射射属属性性的的类类的的公公共共基基类类。从从CCmdTargetCCmdTarget派派生生的的类类能能在在程程序序运运行行时时动动态态创创建建对对象象和处理命令消息。和处理命令消息。VC+应用编程3.CWinApp3.CWinApp类类 应应用用程程序序类类CWinAppCWinApp是是CWinThreadCWinThread的的子子类类,封封装装了了初初始始化化、运运行行、终终止止应应用用程程序序的的代代码码。可可以以由此派生自己的应用类。由此派生自己的应用类。成员函数成员函数功能功能InitInsta
14、nce()应用程序的初始化;创建文档模板、应用程序的初始化;创建文档模板、文档、文档视图和主窗口文档、文档视图和主窗口Run()处理消息循环处理消息循环OnIdle()当没有窗口消息需要处理时,被窗口当没有窗口消息需要处理时,被窗口框架调用框架调用ExitInstance()退出程序时,该函数被调用退出程序时,该函数被调用 VC+应用编程5.CFrameWnd5.CFrameWnd类类 CFrameWndCFrameWnd类类是是CWndCWnd类类的的派派生生类类。它它是是所所有有其其他他框架窗口类的基类,主要框架窗口类的基类,主要用来管理一个窗口用来管理一个窗口。CFrameWndCFra
15、meWnd类类的的对对象象是是一一个个框框架架窗窗口口,包包括括边边框框、标标题题栏栏、菜菜单单、最最大大化化按按钮钮、最最小小化化按按钮钮和和一一个个激激活活的视图。的视图。4.CWnd4.CWnd类类 窗窗口口类类CWndCWnd提提供供了了MFCMFC中中所所有有窗窗口口类类的的基基本本功功能能。从从CWndCWnd派派生生的的类类可可以以拥拥有有自自己己的的窗窗口口,并并对它进行控制。对它进行控制。VC+应用编程6.CView6.CView类类 视视图图类类CViewCView是是CWndCWnd类类的的子子类类。视视图图类类及及其其派派生类用于管理框架窗口的客户区。生类用于管理框架窗
16、口的客户区。7.CDocument7.CDocument类类 文文档档类类CDocumentCDocument负负责责装装载载和和维维护护文文档档。文文档档包包括括应应用用程程序序的的工工作作成成果果或或环环境境设设置置数数据据等等,可可以是程序需要保存的任何内容。以是程序需要保存的任何内容。VC+应用编程8.8.菜单类:菜单类:CMenuCMenu类类 该类是该类是CObjectCObject类的子类,用于管理菜单。它是一个类的子类,用于管理菜单。它是一个Windows Windows HMenuHMenu的封装,提供了与窗口有关的菜单资源建的封装,提供了与窗口有关的菜单资源建立、修改、跟踪
17、及删除的成员函数。立、修改、跟踪及删除的成员函数。9.9.对话框类:对话框类:CDialogCDialog类类 由于对话框是一个特殊的窗口,所以该类是从由于对话框是一个特殊的窗口,所以该类是从CWndCWnd类类中派生出来的。对话框子层次结构包括通用对话框类中派生出来的。对话框子层次结构包括通用对话框类CDialogCDialog以及支持文件选择、颜色选择、字体选择、打印、以及支持文件选择、颜色选择、字体选择、打印、替换文本的公共对话框子类。替换文本的公共对话框子类。VC+应用编程10.10.设备环境类:设备环境类:CDCCDC类类 该类及其子类支持设备描述表对象,是该类及其子类支持设备描述表
18、对象,是CObjectCObject类的类的子类。子类。CDCCDC类是一个较大的类,包括许多成员函数,如映类是一个较大的类,包括许多成员函数,如映射函数、绘画工具函数、区域函数等,通过射函数、绘画工具函数、区域函数等,通过CDCCDC对象的成对象的成员函数可以完成所有的绘画工作员函数可以完成所有的绘画工作.VC+应用编程 一一个个MFCMFC应应用用程程序序并并不不直直接接操操作作上上述述类类,而而是是以以上上述述类类为为基类派生新的类基类派生新的类,从而构建,从而构建WindowsWindows应用程序的基本框架。应用程序的基本框架。例如,应用程序例如,应用程序Li2_1Li2_1中的类与
19、这些基类的派生关系中的类与这些基类的派生关系:VC+应用编程MFC中全局函数和全局变量中全局函数和全局变量 以以Afx为前缀的函数为前缀的函数(数据库类函数和数据库类函数和DDX函数除函数除外外)和变量和变量,在目前的版本中,都表示全局函数或全在目前的版本中,都表示全局函数或全局变量。局变量。AfxAbort:无条件终止一个应用程序无条件终止一个应用程序AfxBeginThread:创建一个新线程并执行它创建一个新线程并执行它AfxEndThread:终止当前正在执行的线程终止当前正在执行的线程AfxFormatString:格式化字符串格式化字符串AfxMessageBox:显示一个显示一个
20、Windows消息框消息框AfxGetApp:返回当前应用程序对象的指针返回当前应用程序对象的指针AfxGetInstanceHandle:返回标识当前应用程序对象的句柄:返回标识当前应用程序对象的句柄AfxRegisterWndClass:注册用于创建:注册用于创建Windows窗口的窗口类窗口的窗口类常见全局函数常见全局函数 VC+应用编程1.1.应用程序向导生成的文件应用程序向导生成的文件 下下面面以以例例2.12.1中中创创建建的的应应用用程程序序Li2_1Li2_1为为例例,介介绍绍MFC AppWizardexeMFC AppWizardexe向导所生成的各类文件及功能。向导所生成
21、的各类文件及功能。2.2.3MFC应用程序分析应用程序分析 VC+应用编程(1)头文件与实现文件头文件与实现文件MainFrm.h和和MainFrm.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:定定义义工工程程中中所所有有资资源源标
22、标识识符符,给给资资源源ID分配一个整数值。分配一个整数值。StdAfx.h和和StdAfx.cpp:用用于于建建立立一一个个预预编编译译的的头头文文件件CLi2_1.PCH和一个预定义的类型文件和一个预定义的类型文件StdAfx.obj。VC+应用编程(2)资源文件资源文件Li2_1.rc和和Li2_1.rc2:Li2_1.rc文文件件是是程程序序所所使使用用的的所有所有Windows资源的列表。资源的列表。Li2_1.ico:应用程序的图标所使用的图标文件。:应用程序的图标所使用的图标文件。Li2_1Doc.ico:应应用用程程序序的的文文档档图图标标文文件件。文文档档图图标一般显示在多文
23、档程序界面上。标一般显示在多文档程序界面上。Toolbar.bmp:工具栏按钮的位图文件。:工具栏按钮的位图文件。VC+应用编程(3)项目工作区文件和工程文件项目工作区文件和工程文件Li2_1.dsw:保保存存当当前前工工作作区区所所包包含含的的工工程程的的信信息。息。Li2_1.dsp:包包含含当当前前工工程程的的设设置置、工工程程中中的的文文件等信息。件等信息。VC+应用编程(4)其他文件其他文件Li2_1.clw:该该 文文 件件 是是 类类 信信 息息 文文 件件。它它 保保 存存 了了ClassWizard编编辑辑现现有有类类或或增增加加新新类类时时需需使使用用的的类类信信息息,同同
24、时时还还保保存存了了创创建建、编编辑辑消消息息映映射射和和成成员员函函数数所所需的信息。需的信息。ReadMe.txt:该该文文件件是是工工程程自自述述文文件件。主主要要介介绍绍所所创创建建文文件件的的内内容容和和功功能能,以以及及添添加加用用户户代代码码、更更改改使使用语言的方法。用语言的方法。VC+应用编程2.2.应用程序的执行过程应用程序的执行过程 启动theAppAfxWinMain()AfxGetApp()InitInstance()Run()消息循环消息循环处理处理收到收到WM_QUITExitInstance()在应用程序的初始化在应用程序的初始化过程中,同时还构造了文过程中,同
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 应用程序 概述 课件
限制150内