版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、7/11/2021WINDOWS程序开发 讲师:鲍钰1 MFC框架基础介绍 讲师:鲍钰 7/11/2021WINDOWS程序开发 讲师:鲍钰2 nMicrosoft Foundation Class n微软基础类微软基础类 7/11/2021WINDOWS程序开发 讲师:鲍钰3 用传统的Windows编程方法开发应用程序,你 会深刻地体会到,即使是开发一个简单地 Windows应用程序也需要对Windows的编程原 理有很深刻的认识,同时也要手工编写很多的 代码。因为程序的出错率几乎是随着代码长度 的增加呈几何级数增长的,这就使得高度程序 变得非常困难。所以传统的Windows编程是需 要极大
2、的耐心和丰富的编程经验的。 7/11/2021WINDOWS程序开发 讲师:鲍钰4 近几年来,面向对象技术无论是在理论还是实践上都在飞速地 发展。面向对象技术中最重要的就是“对象”的概念,它把 现实世界中的气球、自行车等客观实体抽象成程序中的“对 象”。这种“对象”具有一定的属性和方法,这里的属性指 对象本身的各种特性参数。如气球的体积,自行车的长度等 ,而方法是指对象本身所能执行的功能,如气球能飞、自行 车能滚动等。一个具体的对象可以有许多的属性和方法,面 向对象技术的重要特点就是对象的封装性,对于外界而言, 并不需要知道对象有哪些属性,也不需要知道对象本身的方 法是如何实现的,而只需要调用
3、对象所提供的方法来完成特 定的功能。从这里我们可以看出,当把面向对象技术应用到 程序设计中时,程序只是在编写对象方法时才需要关心对象 本身的细节问题,大部分的时间是放在对对象的方法的调用大部分的时间是放在对对象的方法的调用 上,组织这些对象进行协同工作。上,组织这些对象进行协同工作。 7/11/2021WINDOWS程序开发 讲师:鲍钰5 MFC的英文全称是Microsoft Fundation Classes,即微软的基本 类库,MFC的本质就是一个包含了许多微软公司已经定义好 的对象的类库,自从1993年美国微软公司推出Visual C+ 1.0后便配套推出了微软基础类库MFC 1.0(M
4、icrosoft Founddation Class)。 MFC 1.0第一个拉开了以面向对象的程序设计方法编制多任务、 多进程的GUI应用软件系统的序幕。微软公司在16位平台上 几乎没有停留多久,便陆续推出了MFC 1.5,MFC 2.0(含支 持32位的Win32),MFC3.0,MFC 4.0。 1997年5月 随着Visual C+ 5.0的问世,人们看到了支持Web应 用和ActiveX的MFC 6.0基础类库系统。 7/11/2021WINDOWS程序开发 讲师:鲍钰6 虽然我们要编写的程序在功能是千差万别的,但从本制裁上来讲,都可以化 归为用户界面的设计,对文件的操作,多媒体的使
5、用,数据库的访问等等 一些最主要的方面。这一点正是微软提供MFC类库最重要的原因,在这个 类库中包含了100多个程序开发过程中最常用到的对象。在进行程序设计 的时候,如果类库中的某个对象能完成所需的功能,这时我们只要简单地 调用已有对象的方法就可以了。我们还可以利用面向对象技术中很重要的 “继承”方法从类库中的已有对象派生出我们自己的对象,这时派生出来 的对象除了具有类库中对象的特性和功能之外,还可以由我们自己根据需 要加上所需的特性和方法,产生一个更专门的,功能更为强大的对象。当 然,你也可以在程序中创建全新的对象,并根据需要不断完美对象的功能 。 7/11/2021WINDOWS程序开发
6、讲师:鲍钰7 正是由于MFC编程方法充分利用了面向对象技术的优 点,它使得我们编程时极少需要关心对象方法的实 现细节,同时类库中的各种对象的强大功能足以完 成我们程序中的绝大部分所需功能,这使得应用程 序中程序员所需要编写的代码大为减少,有力地保 证了程序良好的可调试性。 7/11/2021WINDOWS程序开发 讲师:鲍钰8 n最后要指出的是,MFC类库在提供对象的各种 属性和方法都是经过地谨慎地编写和严格地测 试,可靠性很高,这就保证了使用MFC类库不 会影响程序的可靠性和正确性。 nMFC是很庞大的。例如,版本7.0中包含了大 约200个不同的类。万幸的是,你在典型的程 序中不需要使用所
7、有的函数。事实上,你可能 只需要使用其中的10多个MFC中的不同类就可 以建立一个非常漂亮的程序。 7/11/2021WINDOWS程序开发 讲师:鲍钰9 微软基础类库微软基础类库MFC CDocument CObject CCmdTarget CWinThread CWinApp COleControlMod ule Application user document CDocTemplate CSingleDocTemplat e CMultiDocTemplate CView CWnd CFrameView 7/11/2021WINDOWS程序开发 讲师:鲍钰10 MFC体系结构体系结构
8、 nMFC是个相当庞大的类库,各个类间的继承与派 生关系井井有条。 CObject类是MFC的基类,其它大部分类都是从 CObject派生而来的。CObject类的派生类按功能 可分为多个部分。下面简要介绍部分常用的类的 派生结构。 7/11/2021WINDOWS程序开发 讲师:鲍钰11 窗口类窗口类 图:部分窗口类的继承关系 CObject CCmdTarget CWnd CFrameWndCViewCDialogBox 7/11/2021WINDOWS程序开发 讲师:鲍钰12 n其中,CCmdTarget(命令目标类)是MFC中拥有 消息循环和消息处理机制的基类。关于MFC Window
9、s程序中建立消息处理机制的步骤在后面详 细介绍。 nCWnd类是从CCmdTarget中派生出来的重要类,它 是所有窗口类的基类。 nCCmdTarget间接派生出了文档/视图结构中应用程 序框架中的许多重要的类:CWinApp、 CFrameWnd、CDocument、CView等(SDI应用程 序框架的四个主要的类)。 7/11/2021WINDOWS程序开发 讲师:鲍钰13 应用程序框架类应用程序框架类 图:应用程序框架类的继承关系 CWinApp类是从CCmdTarget中派生出来的最重要的类,每个用MFC 编写的Windows程序必须有一个它的派生类的对象,它代表一个 应用程序,整个
10、程序的运行都由它负责。CWinApp类很大程度上 隐藏了API Windows程序中WinMain函数。 CObject CCmdTarget CWinThread CDocument CWinApp 7/11/2021WINDOWS程序开发 讲师:鲍钰14 图形绘制类 图:图形绘制类的继承关系 图形绘制类的基类是CDC(设备环境类)。CDC类 提供了基本的绘图及文本输出函数。 CObject CDC CClientDC CPaintDC CWindowDC 7/11/2021WINDOWS程序开发 讲师:鲍钰15 图形对象类图形对象类 图:部分绘图对象类的继承关系 绘图对象类提供给CDC及其
11、派生类在绘图时所需的 各种图形对象,如画笔、刷子、字体等。 CObject CGdiObject CPen CBrush CFont 7/11/2021WINDOWS程序开发 讲师:鲍钰16 MFC体系结构体系结构 nMFC主要组成部分:类、宏和全局函数。 n类是MFC中最主要的内容。MFC类是以层次结构方式组织起来的。 MFC中的类分成两部分,除了一些辅助类,大多数的MFC类是直接或 间接从根类CObject派生而来。 n几乎每一个派生层次都与一具体的Windows实例相对应,如文档类、 窗口类和视图类等。 nMFC宏主要功能:消息映射、运行时对象类型服务、诊断服务、异 常处理。 nMFC约
12、定:全局函数以“Afx”为前缀,全局变量以“afx”为前缀。 7/11/2021WINDOWS程序开发 讲师:鲍钰17 宏宏就是用预处理指令#define定义一个标识符,用 它来表示一个字符串或一段源代码。MFC宏宏作为 MFC类库的一个组成部分在MFC应用程序中经常出 现。MFC宏在Afxwin.h、Afx.h及Afxmsg_.h等MFC头 文件中分别进行了定义。 MFC提供的宏有很多,常用的包括消息映射宏、 运行时类型识别的宏、调试宏和异常宏等,下表列 出了一般MFC编程时要用到的宏。 MFC宏宏 7/11/2021WINDOWS程序开发 讲师:鲍钰18 RUNTIME_CLASS 获得运
13、行时类的CRuntimeClass结构的指针 DECLARE_DYNAMIC提供基本的运行时类型识别(声明) IMPLEMENT_ DYNAMIC提供基本的运行时类型识别(实现) DECLARE_DYNCREATE动态创建(声明) IMPLEMENT_DYNCREATE动态创建(实现) DECLARE_SERIAL对象序列化(声明) IMPLEMENT_SERIAL对象序列化(实现) DECLARE_MESSAGE_MAP声明消息映射表 BEGIN_MESSAGE_MAP开始建立消息映射表 END_MESSAGE_MAP结束建立消息映射表 ON_COMMAND命令消息映射宏 ON_MESSAG
14、E自定义消息映射宏 ON_WM_MFC预定义消息映射宏 ON_BN_ , ON_CBN_ 等控件通知(Notification)消息映射宏 7/11/2021WINDOWS程序开发 讲师:鲍钰19 MFC调试宏调试宏 跟踪声明和断言在查找程序设计错误时是非 常有用的。跟踪声明可以让程序在运行过程中遇到 跟踪声明时在输出窗口显示指定的信息,而断言使 程序在断言条件不成立时暂停程序的运行。MFC提 供了一些跟踪声明和断言宏用于程序调试,这些宏 只能用于DEBUG版本应用程序的调试状态。 1TRACE()宏语法说明如下: TRACE (); 其中参数是由输出格式和变量等组成 的输出表达式,其格式与函
15、数printf()的参数一样, 它指定调试时要在Output窗口输出的内容。 7/11/2021WINDOWS程序开发 讲师:鲍钰20 char* szName = “LiMing”; int nAge = 18; TRACE(“Name = %s, Age = %d n”, szName, nAge ); (只有在调试的时候才可以使用,才可以有结果输出)(只有在调试的时候才可以使用,才可以有结果输出) 例例1 对于以下代码: 调试时在Output窗口输出以下内容: Name = LiMing, Age = 18 7/11/2021WINDOWS程序开发 讲师:鲍钰21 例例2 设自定义一个C
16、FrameWnd的派生类CMyFrame,在程序中构建一个与 CMyFrame相关联的文档模板对象,并为构键的文档模板创建框架窗口: CMyFrame* pFrame=(CMyFrame*) AfxGetMainWnd(); ASSERT(pFrame-IsKindOf(RUNTIME_CLASS (CMyFrame); / 判断pFrame的类型 pFrame-DoSomeOperation(); ASSERT(1=2);/当条件为假时,退出程序当条件为假时,退出程序 调试的时候可以调用调试的时候可以调用 7/11/2021WINDOWS程序开发 讲师:鲍钰22 目录MFCBaseMacro
17、下例程 nF5看TRACE信息,右键ASSERT退出 7/11/2021WINDOWS程序开发 讲师:鲍钰23 常用的常用的MFC类类 MFC库中的类按层次关系划分类 n根类:根类:CObject n应用程序体系结构类应用程序体系结构类 n窗口、对话框和控件类窗口、对话框和控件类 n绘图和打印类绘图和打印类 n简单数据类型类简单数据类型类 n数组、列表和映射类数组、列表和映射类 n文件和数据库类文件和数据库类 nInternet和网络工作类和网络工作类 nOLE类类 n调试和异常类调试和异常类 7/11/2021WINDOWS程序开发 讲师:鲍钰24 CRuntimeClass结构结构 nCR
18、untimeClass在MFC中是以结构的方式定义,它含有 使用CRuntimeClass结构的类的有关信息,与CObject 类一同实现运行时类型识别的功能。CRuntimeClass结 构包含了类名、对象所占存储空间大小及类的版本号 等成员变量和动态对象创建、派生关系判断等成员函 数。 n每个从CObject类派生的类都有一个CRuntimeClass对 象同它关联。要使用CRuntimeClass结构,必须结合使 用RUNTIME_CLASS()宏和其它有关运行时类型识别的 MFC宏。 7/11/2021WINDOWS程序开发 讲师:鲍钰25 CObject类类 n由于MFC中大部分类是
19、从CObject类继承而来的, CObject类描述了几乎所有的MFC类的一些公共特 性,CObject类为程序员提供了对象诊断、运行时 类型识别和序列化等功能。 n对象诊断。MFC提供了两种诊断特性:利用成员 函数AssertValid()进行对象有效性检查,使得类可 以在继续运行前对自己进行正确性检查;利用成 员函数Dump()输出对象的数据成员的值。 n运行时访问类的信息:提供GetRuntimeClass()和 IskindOf()两个成员函数来支持运行时类型识别。 n对象序列化。 7/11/2021WINDOWS程序开发 讲师:鲍钰26 命令相关类:命令相关类:CCmdTarget类
20、类 n该类是CObject的子类,它是MFC库中所有具有消息映射 属性的基类。消息映射规定了当一对象接收到消息命令时, 应调用哪一个函数对该消息进行处理。 n设置光标。CCmdTarget类定义3个函数用于改变光标状态: BeginWaitCursor()将光标改为沙漏形状,EndWaitCursor() 将光标改回调用BeginWait- Cursor()之前的形状, RestoreWaitCursor()用于将光标还原为等待状态。 void CMyView:OnSomeCommand() BeginWaitCursor(); / 显示沙漏状光标 . . . . . . / 进行某种操作 E
21、ndWaitCursor(); / 恢复原来光标的形状 7/11/2021WINDOWS程序开发 讲师:鲍钰27 窗口应用程序类:窗口应用程序类: CWinApp类类 n在MFC应用程序中,CWinApp类取代了WinMain() 主函数在SDK应用程序中的地位。传统SDK应用程 序WinMain()函数完成的工作现在由类CWinApp的 InitApplication()、InitInstance()和Run()三个成员 函数承担。 nCWinApp类封装了初始化、运行、终止应用程序的 代码。在任何MFC应用程序中有且仅有一个 CWinApp派生类的对象,它代表了程序中运行的主 线程,也代表
22、了应用程序本身。 7/11/2021WINDOWS程序开发 讲师:鲍钰28 可视对象类:可视对象类:CWnd类类 nCWnd类由CCmdTarget类直接派生而来,该类及其 派生类的实例是一个窗口。CWnd类代表了MFC中最 基本的GUI对象,它是一个功能最完善、成员函数最 多的MFC类。 n窗口的实例包括应用程序主窗口、对话框和控件等。 nCWnd类提供的功能包括注册新窗口类、创建窗口及 子窗口、获取窗口、管理窗口、访问窗口及控件、控 制窗口光标、创建和使用句柄和支持工具提示等, CWndCWnd提供了提供了MFCMFC中所有窗中所有窗 口类的基本功能,是口类的基本功能,是 CCmdTarg
23、etCCmdTarget类的子类类的子类 创建创建WindowsWindows 窗口要分两窗口要分两 步进行步进行 引入构造函数,构引入构造函数,构 造一个造一个CWndCWnd对象对象 调用调用CreateCreate建立建立WindowsWindows窗窗 口,并将它连到口,并将它连到CWndCWnd对象上对象上 7/11/2021WINDOWS程序开发 讲师:鲍钰29 其它可视对象类其它可视对象类 视类:视类:CViewCView类类 该类表示框架窗口的客户区和显示文档数据并接收输入的客户区该类表示框架窗口的客户区和显示文档数据并接收输入的客户区 ,其派生类主要有如下几种:,其派生类主要
24、有如下几种: lCScrollViewCScrollView:具有滚动功能的视的基类:具有滚动功能的视的基类 lCFormViewCFormView:其布局在对话资源中定义的滚动视:其布局在对话资源中定义的滚动视 lCEditViewCEditView:具有文本编辑、查找、替换和滚动功能的视:具有文本编辑、查找、替换和滚动功能的视 7/11/2021WINDOWS程序开发 讲师:鲍钰30 其它可视对象类其它可视对象类 菜单类:菜单类:CMenuCMenu类类 该类是该类是CObjectCObject类的子类,用于管理菜单。它是一个类的子类,用于管理菜单。它是一个 Windows HMenuWi
25、ndows HMenu的封装,提供了与窗口有关的菜单资的封装,提供了与窗口有关的菜单资 源建立、修改、跟踪及删除的成员函数。源建立、修改、跟踪及删除的成员函数。 对话框类:对话框类:CDialogCDialog类类 由于对话框是一个特殊的窗口,所以该类是从由于对话框是一个特殊的窗口,所以该类是从CWndCWnd类类 中派生出来的。中派生出来的。对话框子层次结构包括通用对话框类对话框子层次结构包括通用对话框类 CDialogCDialog以及支持文件选择、颜色选择、字体选择、以及支持文件选择、颜色选择、字体选择、 打印、替换文本的公共对话框子类。打印、替换文本的公共对话框子类。 7/11/202
26、1WINDOWS程序开发 讲师:鲍钰31 其它可视对象类其它可视对象类 控件类控件类 控件子层次结构包括若干类,控件子层次结构包括若干类,使用这些类可建立静态文本、使用这些类可建立静态文本、 命令按钮、位图按钮、列表框、组合框、滚动条、编辑框等。命令按钮、位图按钮、列表框、组合框、滚动条、编辑框等。 这些直观控件为这些直观控件为WindowsWindows应用程序提供了各种输入和显示界面。应用程序提供了各种输入和显示界面。 控件条类:控件条类:CControlBarCControlBar类类 控件条子层次结构为工具条、状态条、对话条和分割窗口控件条子层次结构为工具条、状态条、对话条和分割窗口
27、建立模型。建立模型。该类是该类是CToolBarCToolBar、CStatusBarCStatusBar、CDialogBarCDialogBar的基的基 类,负责管理工具条、状态条、对话条的一些成员函数。控件类,负责管理工具条、状态条、对话条的一些成员函数。控件 条指的是连接在主窗口框架的顶部或底部的小窗口条指的是连接在主窗口框架的顶部或底部的小窗口 7/11/2021WINDOWS程序开发 讲师:鲍钰32 其它可视对象类其它可视对象类 绘画对象类:绘画对象类:CGdiObjectCGdiObject类类 图形绘画对象子层次结构以图形绘画对象子层次结构以CGdiObjectCGdiObje
28、ct类为根类,可用于建类为根类,可用于建 立绘画对象模型,立绘画对象模型,如画笔、刷子、字体、位图、调色板等。如画笔、刷子、字体、位图、调色板等。 设备描述表类:设备描述表类:CDCCDC类类 该类及其子类支持设备描述表对象,是该类及其子类支持设备描述表对象,是CObjectCObject类的子类。类的子类。 CDCCDC类是一个较大的类,包括许多成员函数,如映射函数、类是一个较大的类,包括许多成员函数,如映射函数、 绘画工具函数、区域函数等,通过绘画工具函数、区域函数等,通过CDCCDC对象的成员函数可以对象的成员函数可以 完成所有的绘画工作完成所有的绘画工作 7/11/2021WINDOW
29、S程序开发 讲师:鲍钰33 CFrameWnd类类 nCFrameWnd类是CWnd类的派生类,主要用来掌管一 个窗口,它取代了SDK应用程序中窗口函数WndProc() 的地位。 nCFrameWnd类的对象是一个框架窗口,包括边框、 标题栏、菜单、最大化按钮、最小化按钮和一个激活 的视图。 nCFrameWnd支持SDI界面,对于MDI界面,使用其两 个派生类CMDIFrameWnd和CMDIChildWnd。 nCFrameWnd提供了若干个成员函数用于获得和设置 活动文档、视图、图文框、标题栏、状态栏等操作。 7/11/2021WINDOWS程序开发 讲师:鲍钰34 CDocument
30、和和CView类类 nCDocument类在应用程序中作为用户文档类的基 类,它代表了用户存储或打开的一个文件。 CDocument类的主要功能是把对数据的处理从对 用户的界面处理中分离出来,同时提供了一个与 视图类交互的接口。 nCDocument类支持标准的文件操作,如创建、打 开和存储一个文档等。 nCView类是MFC中一个很基本的类,它作为其它 MFC视图类和用户视图派生类的基类。 7/11/2021WINDOWS程序开发 讲师:鲍钰35 通用类通用类 此类提供了许多通用服务,例如文件此类提供了许多通用服务,例如文件I/OI/O、诊断和异常处理等,、诊断和异常处理等, 此外还包括如数
31、组和列表等存放数据集的类此外还包括如数组和列表等存放数据集的类 1 1文件类:文件类:CFileCFile类和类和CArchiveCArchive类类用以编写输入输出处理函数用以编写输入输出处理函数 2 2异常类:异常类:CExceptionCException类类 是所有异常情况的基类。不能直接建立是所有异常情况的基类。不能直接建立 CExceptionCException对象,只能建立派生类的对对象,只能建立派生类的对 象,用派生类来捕获指定的异常情况象,用派生类来捕获指定的异常情况 3 3模板收集类模板收集类 这些类可以将多种对象存放到数组、列表和这些类可以将多种对象存放到数组、列表和“
32、 映射映射” 中。但这些收集类是模板,它们的参数确定了存放在中。但这些收集类是模板,它们的参数确定了存放在 集合中的对象类型。集合中的对象类型。 7/11/2021WINDOWS程序开发 讲师:鲍钰36 MFC 中全局函数和全局变量中全局函数和全局变量 以以Afx为前缀的函数为前缀的函数( (数据库类函数和数据库类函数和DDX函数除外函数除外) )和变量,和变量, 在目前的版本中,都表示全局函数或全局变量。在目前的版本中,都表示全局函数或全局变量。 nAfxAbort: 无条件终止一个应用程序无条件终止一个应用程序 nAfxBeginThread: 创建一个新线程并执行它创建一个新线程并执行它
33、 nAfxEndThread: 终止当前正在执行的线程终止当前正在执行的线程 nAfxFormatString: 格式化字符串格式化字符串 nAfxMessageBox: 显示一个显示一个Windows消息框消息框 nAfxGetApp: 返回当前应用程序对象的指针返回当前应用程序对象的指针 nAfxGetAppName: 返回应用程序的名称返回应用程序的名称 nAfxGetMainWnd: 返回指向应用程序主窗口的指针返回指向应用程序主窗口的指针 nAfxGetInstanceHandle:返回标识当前应用程序对象的句柄:返回标识当前应用程序对象的句柄 nAfxRegisterWndClas
34、s: 注册用于创建注册用于创建Windows窗口的窗口类窗口的窗口类 7/11/2021WINDOWS程序开发 讲师:鲍钰37 例如调用例如调用AfxMessageBox函数将弹出一个消息框,其函数将弹出一个消息框,其 功能与功能与CWinApp中的中的DoMessageBox相同。相同。 AfxMessageBox原型如下:原型如下: int AfxMessageBox ( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 ) 7/11/2021WINDOWS程序开发 讲师:鲍钰38 int AfxMessageBox(LPCTST
35、R lpszText,UINT nType = MB_OK, UINT nIDHelp = 0 ) nMB_ABORTRETRYIGNORE nMB_OK nMB_OKCANCEL nMB_RETRYCANCEL nMB_YESNO nMB_YESNOCANCEL 7/11/2021WINDOWS程序开发 讲师:鲍钰39 常用的三种工程 1、Win32 Console ApplicationWin32 Console Application(控制台应用程序) 用于创建DOS控制台的C/C+程序(Windows DOS虚拟 机下的DOS程序),简称DOS程序。 2、Win32 Applicati
36、onWin32 Application(Windows应用程序:C或底层面向对 象程序) 用于创建的Windows C/API程序或MFC Windows程序 (MFC:Micrsoft Foundation Classes,VC6.0预定了近二 百三十个类) 3 、MFC AppWizardMFC AppWizard(MFC Windows程序) 用向导创建MFC Windows程序,并生成应用程序框架(即 自动生成底层代码)。编程时在原代码基础上增加新的应 用代码即可。 7/11/2021WINDOWS程序开发 讲师:鲍钰40 用Win32 Console Application创建 DO
37、S控制台程序 7/11/2021WINDOWS程序开发 讲师:鲍钰41 用MFC AppWizardMFC AppWizard创建创建MFC Windows程序 该工程创建程序的类型: 1、Dialog based;2、SDI;3、MDI 例例:用MFC AppWizardMFC AppWizard创建SDI单文档面应用程序,并在客户区 (100,100)处开始显示“Hello,World!”的字符串。 见操作演示。 目录目录MyMFC下例程下例程 7/11/2021WINDOWS程序开发 讲师:鲍钰42 创建第一个MFC程序 7/11/2021WINDOWS程序开发 讲师:鲍钰43 Step
38、1 7/11/2021WINDOWS程序开发 讲师:鲍钰44 Step2 7/11/2021WINDOWS程序开发 讲师:鲍钰45 Step3 7/11/2021WINDOWS程序开发 讲师:鲍钰46 Step4 7/11/2021WINDOWS程序开发 讲师:鲍钰47 Step5 7/11/2021WINDOWS程序开发 讲师:鲍钰48 Step6 7/11/2021WINDOWS程序开发 讲师:鲍钰49 Step7 7/11/2021WINDOWS程序开发 讲师:鲍钰50 单文档应用程序创建的类 nCAboutDlg对话框类 nCMyMFCApp应用程序类 nCMyMFCDoc文档类 nC
39、MyMFCView视图类 nCMainFrame框架类 7/11/2021WINDOWS程序开发 讲师:鲍钰51 7/11/2021WINDOWS程序开发 讲师:鲍钰52 7/11/2021WINDOWS程序开发 讲师:鲍钰53 n尽管每个应用程序具体实现的功能不同,但同一类程序的基本结构是相 同的。因此,通常采用MFC AppWizard创建一个MFC应用程序框架应用程序框架。 nMFC不仅仅是一个类库,它还提供了一层建立在MFC类对象封装上的附 加应用程序框架。应用程序框架是为了生成一般的应用程序所必需的各 种软组件的集成。 n类库只是一种可以嵌入到任何程序中的、提供某些特定功能的类的集合
40、。 而应用程序框架却定制了应用程序的结构和源代码,其中的类对象既相 互独立、又相互作用,形成一个统一的整体。 MFC应用程序框架应用程序框架 7/11/2021WINDOWS程序开发 讲师:鲍钰54 nMFC应用程序框架提供了构建应用程序所需要的类,在程序运行 时能够生成运行时类的对象,如代表应用程序对象、文档对象、 视图对象和框架窗口对象。应用程序对象theApp是一个唯一的全 局变量,它的主要功能是通过调用WinMain()主函数启动程序的 运行。 nMYMFC.CPP 中代码:CMyMFCApp theApp; nMFC应用程序框架也有一个作为程序入口点的WinMain()主函数, 但在
41、源程序中看不见该函数,它在MFC中已定义好并同应用程序 相链接。 应用程序框架中的对象应用程序框架中的对象 7/11/2021WINDOWS程序开发 讲师:鲍钰55 n在MFC应用程序的CWinApp派生类对象theApp是一个全局变量,代表了应 用程序运行的主线程。它在程序整个运行期间都存在,它的销毁意味着运 行程序的消亡。 nMFC应用程序启动时,首先创建应用程序对象theApp,这时将自动调用应 用程序类的构造函数初始化对象theApp,然后由应用程序框架调用MFC提 供的AfxWinMain()主函数。 nAfxWinMain()主函数首先通过调用全局函数AfxGetApp()获取应用程序对象 theApp的指针pApp,然后通过pApp调用应用程序对象的有关成员函数,完 成程序的初始化和启动工作,最后调用成员函数Run(),进入消息循环。 n程序运
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养路工工作制度
- 工厂单休工作制度
- 2026年科研项目经费购置资产管理制度与台账管理
- 三防工作制度
- 专业组工作制度
- 凤还巢工作制度
- 体艺美工作制度
- 兽医站工作制度
- 介入工作制度
- 俏佳人工作制度
- 浙江国企招聘2025宁波市水务环境集团股份有限公司招聘35人笔试参考题库附带答案详解
- 配电室电缆穿管施工方案
- 树立良好的班风学风课件
- 天然气管道穿越河流施工专项方案
- 合成孔径雷达(SAR)伪装目标特性剖析与伪装效果量化评估体系构建
- 装配式管廊技术应用与实践汇报
- 乙酰半胱氨酸的用药护理
- DB5301∕T 102-2024 应用软件定制开发成本测算指南
- 2025年内江市中考地理试题(含答案解析)
- 2025护理分级新标准
- GB/T 42124.3-2025产品几何技术规范(GPS)模制件的尺寸和几何公差第3部分:铸件尺寸公差、几何公差与机械加工余量
评论
0/150
提交评论