《MFC框架基本介绍.ppt》由会员分享,可在线阅读,更多相关《MFC框架基本介绍.ppt(77页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、10/16/2020,WINDOWS程序开发 讲师:鲍钰,1,MFC框架基础介绍,讲师:鲍钰 ,10/16/2020,WINDOWS程序开发 讲师:鲍钰,2,Microsoft Foundation Class 微软基础类,10/16/2020,WINDOWS程序开发 讲师:鲍钰,3,MFC基础,用传统的Windows编程方法开发应用程序,你会深刻地体会到,即使是开发一个简单地Windows应用程序也需要对Windows的编程原理有很深刻的认识,同时也要手工编写很多的代码。因为程序的出错率几乎是随着代码长度的增加呈几何级数增长的,这就使得高度程序变得非常困难。所以传统的Windows编程是需要
2、极大的耐心和丰富的编程经验的。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,4,MFC基础,近几年来,面向对象技术无论是在理论还是实践上都在飞速地发展。面向对象技术中最重要的就是“对象”的概念,它把现实世界中的气球、自行车等客观实体抽象成程序中的“对象”。这种“对象”具有一定的属性和方法,这里的属性指对象本身的各种特性参数。如气球的体积,自行车的长度等,而方法是指对象本身所能执行的功能,如气球能飞、自行车能滚动等。一个具体的对象可以有许多的属性和方法,面向对象技术的重要特点就是对象的封装性,对于外界而言,并不需要知道对象有哪些属性,也不需要知道对象本身的方法是如何实现的,而只需要
3、调用对象所提供的方法来完成特定的功能。从这里我们可以看出,当把面向对象技术应用到程序设计中时,程序只是在编写对象方法时才需要关心对象本身的细节问题,大部分的时间是放在对对象的方法的调用上,组织这些对象进行协同工作。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,5,MFC基础,MFC的英文全称是Microsoft Fundation Classes,即微软的基本类库,MFC的本质就是一个包含了许多微软公司已经定义好的对象的类库,自从1993年美国微软公司推出Visual C+ 1.0后便配套推出了微软基础类库MFC 1.0(Microsoft Founddation Class)。
4、 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基础类库系统。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,6,MFC基础,虽然我们要编写的程序在功能是千差万别的,但从本制裁上来讲,都可以化归为用户界面的设计,对文件的操作,多媒体的使用,数据库的访问等等一些最主要的方面。这一点正是
5、微软提供MFC类库最重要的原因,在这个类库中包含了100多个程序开发过程中最常用到的对象。在进行程序设计的时候,如果类库中的某个对象能完成所需的功能,这时我们只要简单地调用已有对象的方法就可以了。我们还可以利用面向对象技术中很重要的“继承”方法从类库中的已有对象派生出我们自己的对象,这时派生出来的对象除了具有类库中对象的特性和功能之外,还可以由我们自己根据需要加上所需的特性和方法,产生一个更专门的,功能更为强大的对象。当然,你也可以在程序中创建全新的对象,并根据需要不断完美对象的功能。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,7,MFC基础,正是由于MFC编程方法充分利用了面
6、向对象技术的优点,它使得我们编程时极少需要关心对象方法的实现细节,同时类库中的各种对象的强大功能足以完成我们程序中的绝大部分所需功能,这使得应用程序中程序员所需要编写的代码大为减少,有力地保证了程序良好的可调试性。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,8,MFC基础,最后要指出的是,MFC类库在提供对象的各种属性和方法都是经过地谨慎地编写和严格地测试,可靠性很高,这就保证了使用MFC类库不会影响程序的可靠性和正确性。 MFC是很庞大的。例如,版本7.0中包含了大约200个不同的类。万幸的是,你在典型的程序中不需要使用所有的函数。事实上,你可能只需要使用其中的10多个MFC
7、中的不同类就可以建立一个非常漂亮的程序。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,9,微软基础类库MFC,10/16/2020,WINDOWS程序开发 讲师:鲍钰,10,MFC体系结构 MFC是个相当庞大的类库,各个类间的继承与派生关系井井有条。 CObject类是MFC的基类,其它大部分类都是从CObject派生而来的。CObject类的派生类按功能可分为多个部分。下面简要介绍部分常用的类的派生结构。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,11,窗口类 图:部分窗口类的继承关系,CObject,CCmdTarget,CWnd,CFrameWnd,CVie
8、w,CDialogBox,10/16/2020,WINDOWS程序开发 讲师:鲍钰,12,其中,CCmdTarget(命令目标类)是MFC中拥有消息循环和消息处理机制的基类。关于MFC Windows程序中建立消息处理机制的步骤在后面详细介绍。 CWnd类是从CCmdTarget中派生出来的重要类,它是所有窗口类的基类。 CCmdTarget间接派生出了文档/视图结构中应用程序框架中的许多重要的类:CWinApp、CFrameWnd、CDocument、CView等(SDI应用程序框架的四个主要的类)。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,13,应用程序框架类 图:应用程
9、序框架类的继承关系 CWinApp类是从CCmdTarget中派生出来的最重要的类,每个用MFC编写的Windows程序必须有一个它的派生类的对象,它代表一个应用程序,整个程序的运行都由它负责。CWinApp类很大程度上隐藏了API Windows程序中WinMain函数。,CObject,CCmdTarget,CWinThread,CDocument,CWinApp,10/16/2020,WINDOWS程序开发 讲师:鲍钰,14,图形绘制类 图:图形绘制类的继承关系 图形绘制类的基类是CDC(设备环境类)。CDC类提供了基本的绘图及文本输出函数。,10/16/2020,WINDOWS程序开发
10、 讲师:鲍钰,15,图形对象类 图:部分绘图对象类的继承关系 绘图对象类提供给CDC及其派生类在绘图时所需的各种图形对象,如画笔、刷子、字体等。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,16,MFC体系结构,MFC主要组成部分:类、宏和全局函数。 类是MFC中最主要的内容。MFC类是以层次结构方式组织起来的。MFC中的类分成两部分,除了一些辅助类,大多数的MFC类是直接或间接从根类CObject派生而来。 几乎每一个派生层次都与一具体的Windows实例相对应,如文档类、窗口类和视图类等。 MFC宏主要功能:消息映射、运行时对象类型服务、诊断服务、异常处理。 MFC约定:全局
11、函数以“Afx”为前缀,全局变量以“afx”为前缀。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,17,宏就是用预处理指令#define定义一个标识符,用它来表示一个字符串或一段源代码。MFC宏作为MFC类库的一个组成部分在MFC应用程序中经常出现。MFC宏在Afxwin.h、Afx.h及Afxmsg_.h等MFC头文件中分别进行了定义。 MFC提供的宏有很多,常用的包括消息映射宏、运行时类型识别的宏、调试宏和异常宏等,下表列出了一般MFC编程时要用到的宏。,MFC宏,10/16/2020,WINDOWS程序开发 讲师:鲍钰,18,10/16/2020,WINDOWS程序开发 讲
12、师:鲍钰,19,MFC调试宏,跟踪声明和断言在查找程序设计错误时是非常有用的。跟踪声明可以让程序在运行过程中遇到跟踪声明时在输出窗口显示指定的信息,而断言使程序在断言条件不成立时暂停程序的运行。MFC提供了一些跟踪声明和断言宏用于程序调试,这些宏只能用于DEBUG版本应用程序的调试状态。 1TRACE()宏语法说明如下: TRACE (); 其中参数是由输出格式和变量等组成的输出表达式,其格式与函数printf()的参数一样,它指定调试时要在Output窗口输出的内容。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,20,char* szName = “LiMing”; int n
13、Age = 18; TRACE(“Name = %s, Age = %d n”, szName, nAge ); (只有在调试的时候才可以使用,才可以有结果输出),例1 对于以下代码:,调试时在Output窗口输出以下内容: Name = LiMing, Age = 18,10/16/2020,WINDOWS程序开发 讲师:鲍钰,21,例2 设自定义一个CFrameWnd的派生类CMyFrame,在程序中构建一个与CMyFrame相关联的文档模板对象,并为构键的文档模板创建框架窗口: CMyFrame* pFrame=(CMyFrame*) AfxGetMainWnd(); ASSERT(pF
14、rame-IsKindOf(RUNTIME_CLASS (CMyFrame); / 判断pFrame的类型 pFrame-DoSomeOperation(); ASSERT(1=2);/当条件为假时,退出程序 调试的时候可以调用,10/16/2020,WINDOWS程序开发 讲师:鲍钰,22,目录MFCBaseMacro下例程,F5看TRACE信息,右键ASSERT退出,10/16/2020,WINDOWS程序开发 讲师:鲍钰,23,常用的MFC类,MFC库中的类按层次关系划分类 根类:CObject 应用程序体系结构类 窗口、对话框和控件类 绘图和打印类 简单数据类型类 数组、列表和映射类
15、文件和数据库类 Internet和网络工作类 OLE类 调试和异常类,10/16/2020,WINDOWS程序开发 讲师:鲍钰,24,CRuntimeClass结构 CRuntimeClass在MFC中是以结构的方式定义,它含有使用CRuntimeClass结构的类的有关信息,与CObject类一同实现运行时类型识别的功能。CRuntimeClass结构包含了类名、对象所占存储空间大小及类的版本号等成员变量和动态对象创建、派生关系判断等成员函数。 每个从CObject类派生的类都有一个CRuntimeClass对象同它关联。要使用CRuntimeClass结构,必须结合使用RUNTIME_CL
16、ASS()宏和其它有关运行时类型识别的MFC宏。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,25,CObject类 由于MFC中大部分类是从CObject类继承而来的,CObject类描述了几乎所有的MFC类的一些公共特性,CObject类为程序员提供了对象诊断、运行时类型识别和序列化等功能。 对象诊断。MFC提供了两种诊断特性:利用成员函数AssertValid()进行对象有效性检查,使得类可以在继续运行前对自己进行正确性检查;利用成员函数Dump()输出对象的数据成员的值。 运行时访问类的信息:提供GetRuntimeClass()和IskindOf()两个成员函数来支持运
17、行时类型识别。 对象序列化。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,26,命令相关类:CCmdTarget类 该类是CObject的子类,它是MFC库中所有具有消息映射属性的基类。消息映射规定了当一对象接收到消息命令时,应调用哪一个函数对该消息进行处理。 设置光标。CCmdTarget类定义3个函数用于改变光标状态:BeginWaitCursor()将光标改为沙漏形状,EndWaitCursor()将光标改回调用BeginWait- Cursor()之前的形状,RestoreWaitCursor()用于将光标还原为等待状态。,void CMyView:OnSomeComma
18、nd() BeginWaitCursor(); / 显示沙漏状光标 . . . . . . / 进行某种操作 EndWaitCursor(); / 恢复原来光标的形状 ,10/16/2020,WINDOWS程序开发 讲师:鲍钰,27,窗口应用程序类: CWinApp类 在MFC应用程序中,CWinApp类取代了WinMain()主函数在SDK应用程序中的地位。传统SDK应用程序WinMain()函数完成的工作现在由类CWinApp的InitApplication()、InitInstance()和Run()三个成员函数承担。 CWinApp类封装了初始化、运行、终止应用程序的代码。在任何MFC
19、应用程序中有且仅有一个CWinApp派生类的对象,它代表了程序中运行的主线程,也代表了应用程序本身。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,28,可视对象类:CWnd类 CWnd类由CCmdTarget类直接派生而来,该类及其派生类的实例是一个窗口。CWnd类代表了MFC中最基本的GUI对象,它是一个功能最完善、成员函数最多的MFC类。 窗口的实例包括应用程序主窗口、对话框和控件等。 CWnd类提供的功能包括注册新窗口类、创建窗口及子窗口、获取窗口、管理窗口、访问窗口及控件、控制窗口光标、创建和使用句柄和支持工具提示等,,CWnd提供了MFC中所有窗口类的基本功能,是CCm
20、dTarget类的子类,10/16/2020,WINDOWS程序开发 讲师:鲍钰,29,其它可视对象类,10/16/2020,WINDOWS程序开发 讲师:鲍钰,30,其它可视对象类,菜单类:CMenu类,该类是CObject类的子类,用于管理菜单。它是一个Windows HMenu的封装,提供了与窗口有关的菜单资源建立、修改、跟踪及删除的成员函数。,对话框类:CDialog类,由于对话框是一个特殊的窗口,所以该类是从CWnd类中派生出来的。对话框子层次结构包括通用对话框类CDialog以及支持文件选择、颜色选择、字体选择、打印、替换文本的公共对话框子类。,10/16/2020,WINDOWS
21、程序开发 讲师:鲍钰,31,其它可视对象类,控件类,控件子层次结构包括若干类,使用这些类可建立静态文本、命令按钮、位图按钮、列表框、组合框、滚动条、编辑框等。这些直观控件为Windows应用程序提供了各种输入和显示界面。,控件条类:CControlBar类,控件条子层次结构为工具条、状态条、对话条和分割窗口建立模型。该类是CToolBar、CStatusBar、CDialogBar的基类,负责管理工具条、状态条、对话条的一些成员函数。控件条指的是连接在主窗口框架的顶部或底部的小窗口,10/16/2020,WINDOWS程序开发 讲师:鲍钰,32,其它可视对象类,绘画对象类:CGdiObject
22、类,图形绘画对象子层次结构以CGdiObject类为根类,可用于建立绘画对象模型,如画笔、刷子、字体、位图、调色板等。,设备描述表类:CDC类,该类及其子类支持设备描述表对象,是CObject类的子类。CDC类是一个较大的类,包括许多成员函数,如映射函数、绘画工具函数、区域函数等,通过CDC对象的成员函数可以完成所有的绘画工作,10/16/2020,WINDOWS程序开发 讲师:鲍钰,33,CFrameWnd类 CFrameWnd类是CWnd类的派生类,主要用来掌管一个窗口,它取代了SDK应用程序中窗口函数WndProc()的地位。 CFrameWnd类的对象是一个框架窗口,包括边框、标题栏、
23、菜单、最大化按钮、最小化按钮和一个激活的视图。 CFrameWnd支持SDI界面,对于MDI界面,使用其两个派生类CMDIFrameWnd和CMDIChildWnd。 CFrameWnd提供了若干个成员函数用于获得和设置活动文档、视图、图文框、标题栏、状态栏等操作。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,34,CDocument和CView类 CDocument类在应用程序中作为用户文档类的基类,它代表了用户存储或打开的一个文件。CDocument类的主要功能是把对数据的处理从对用户的界面处理中分离出来,同时提供了一个与视图类交互的接口。 CDocument类支持标准的文件
24、操作,如创建、打开和存储一个文档等。 CView类是MFC中一个很基本的类,它作为其它MFC视图类和用户视图派生类的基类。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,35,通用类,此类提供了许多通用服务,例如文件I/O、诊断和异常处理等,此外还包括如数组和列表等存放数据集的类,10/16/2020,WINDOWS程序开发 讲师:鲍钰,36,MFC 中全局函数和全局变量,以Afx为前缀的函数(数据库类函数和DDX函数除外)和变量,在目前的版本中,都表示全局函数或全局变量。,AfxAbort: 无条件终止一个应用程序 AfxBeginThread: 创建一个新线程并执行它 AfxE
25、ndThread: 终止当前正在执行的线程 AfxFormatString: 格式化字符串 AfxMessageBox: 显示一个Windows消息框 AfxGetApp: 返回当前应用程序对象的指针 AfxGetAppName: 返回应用程序的名称 AfxGetMainWnd: 返回指向应用程序主窗口的指针 AfxGetInstanceHandle:返回标识当前应用程序对象的句柄 AfxRegisterWndClass: 注册用于创建Windows窗口的窗口类,10/16/2020,WINDOWS程序开发 讲师:鲍钰,37,例如调用AfxMessageBox函数将弹出一个消息框,其功能与CW
26、inApp中的DoMessageBox相同。 AfxMessageBox原型如下: int AfxMessageBox ( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 ),10/16/2020,WINDOWS程序开发 讲师:鲍钰,38,int AfxMessageBox(LPCTSTR lpszText,UINT nType = MB_OK, UINT nIDHelp = 0 ),MB_ABORTRETRYIGNORE MB_OK MB_OKCANCEL MB_RETRYCANCEL MB_YESNO MB_YESNOCANCE
27、L,10/16/2020,WINDOWS程序开发 讲师:鲍钰,39,常用的三种工程,1、Win32 Console Application(控制台应用程序) 用于创建DOS控制台的C/C+程序(Windows DOS虚拟机下的DOS程序),简称DOS程序。 2、Win32 Application(Windows应用程序:C或底层面向对象程序) 用于创建的Windows C/API程序或MFC Windows程序(MFC:Micrsoft Foundation Classes,VC6.0预定了近二百三十个类) 3 、MFC AppWizard(MFC Windows程序) 用向导创建MFC Wi
28、ndows程序,并生成应用程序框架(即自动生成底层代码)。编程时在原代码基础上增加新的应用代码即可。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,40,用Win32 Console Application创建DOS控制台程序,用Win32 Application创建Windows程序1、创建Windows API程序2、创建MFC Windows程序,10/16/2020,WINDOWS程序开发 讲师:鲍钰,41,用MFC AppWizard创建MFC Windows程序 该工程创建程序的类型: 1、Dialog based;2、SDI;3、MDI 例:用MFC AppWizar
29、d创建SDI单文档面应用程序,并在客户区(100,100)处开始显示“Hello,World!”的字符串。 见操作演示。 目录MyMFC下例程,10/16/2020,WINDOWS程序开发 讲师:鲍钰,42,创建第一个MFC程序,10/16/2020,WINDOWS程序开发 讲师:鲍钰,43,Step1,10/16/2020,WINDOWS程序开发 讲师:鲍钰,44,Step2,10/16/2020,WINDOWS程序开发 讲师:鲍钰,45,Step3,10/16/2020,WINDOWS程序开发 讲师:鲍钰,46,Step4,10/16/2020,WINDOWS程序开发 讲师:鲍钰,47,S
30、tep5,10/16/2020,WINDOWS程序开发 讲师:鲍钰,48,Step6,10/16/2020,WINDOWS程序开发 讲师:鲍钰,49,Step7,10/16/2020,WINDOWS程序开发 讲师:鲍钰,50,单文档应用程序创建的类,CAboutDlg对话框类 CMyMFCApp应用程序类 CMyMFCDoc文档类 CMyMFCView视图类 CMainFrame框架类,10/16/2020,WINDOWS程序开发 讲师:鲍钰,51,10/16/2020,WINDOWS程序开发 讲师:鲍钰,52,10/16/2020,WINDOWS程序开发 讲师:鲍钰,53,尽管每个应用程序具
31、体实现的功能不同,但同一类程序的基本结构是相同的。因此,通常采用MFC AppWizard创建一个MFC应用程序框架。 MFC不仅仅是一个类库,它还提供了一层建立在MFC类对象封装上的附加应用程序框架。应用程序框架是为了生成一般的应用程序所必需的各种软组件的集成。 类库只是一种可以嵌入到任何程序中的、提供某些特定功能的类的集合。而应用程序框架却定制了应用程序的结构和源代码,其中的类对象既相互独立、又相互作用,形成一个统一的整体。,MFC应用程序框架,10/16/2020,WINDOWS程序开发 讲师:鲍钰,54,MFC应用程序框架提供了构建应用程序所需要的类,在程序运行时能够生成运行时类的对象
32、,如代表应用程序对象、文档对象、视图对象和框架窗口对象。应用程序对象theApp是一个唯一的全局变量,它的主要功能是通过调用WinMain()主函数启动程序的运行。 MYMFC.CPP 中代码:CMyMFCApp theApp; MFC应用程序框架也有一个作为程序入口点的WinMain()主函数,但在源程序中看不见该函数,它在MFC中已定义好并同应用程序相链接。,应用程序框架中的对象,10/16/2020,WINDOWS程序开发 讲师:鲍钰,55,在MFC应用程序的CWinApp派生类对象theApp是一个全局变量,代表了应用程序运行的主线程。它在程序整个运行期间都存在,它的销毁意味着运行程序
33、的消亡。 MFC应用程序启动时,首先创建应用程序对象theApp,这时将自动调用应用程序类的构造函数初始化对象theApp,然后由应用程序框架调用MFC提供的AfxWinMain()主函数。 AfxWinMain()主函数首先通过调用全局函数AfxGetApp()获取应用程序对象theApp的指针pApp,然后通过pApp调用应用程序对象的有关成员函数,完成程序的初始化和启动工作,最后调用成员函数Run(),进入消息循环。 程序运行后将收到WM_PAINT消息,调用OnPaint()函数绘制客户区窗口。如果Run()收到WM_QUIT消息,则结束消息循环,然后调用函数ExitInstance(
34、),结束程序运行。,MFC应用程序的生与死,10/16/2020,WINDOWS程序开发 讲师:鲍钰,56,MFC应用程序运行后各函数的调用关系,InitInstance()函数是派生类唯一需要重载的函数,它负责应用程序的初始化,如初始化数据、创建文档模板、处理命令行以及显示应用程序主窗口。,10/16/2020,WINDOWS程序开发 讲师:鲍钰,57,MFC基本框架的生成(目录MFCBase),10/16/2020,WINDOWS程序开发 讲师:鲍钰,58,MFC框架的生成,10/16/2020,WINDOWS程序开发 讲师:鲍钰,59,MFC框架的生成,10/16/2020,WINDOW
35、S程序开发 讲师:鲍钰,60,MFC框架的生成,10/16/2020,WINDOWS程序开发 讲师:鲍钰,61,MFC框架的生成,10/16/2020,WINDOWS程序开发 讲师:鲍钰,62,MFC框架的生成,10/16/2020,WINDOWS程序开发 讲师:鲍钰,63,MFC框架的生成,10/16/2020,WINDOWS程序开发 讲师:鲍钰,64,MFC框架的生成,10/16/2020,WINDOWS程序开发 讲师:鲍钰,65,MFC框架的生成,10/16/2020,WINDOWS程序开发 讲师:鲍钰,66,MFC框架的生成,10/16/2020,WINDOWS程序开发 讲师:鲍钰,6
36、7,MFC框架的生成,10/16/2020,WINDOWS程序开发 讲师:鲍钰,68,10/16/2020,WINDOWS程序开发 讲师:鲍钰,69,10/16/2020,WINDOWS程序开发 讲师:鲍钰,70,MFC框架的生成,10/16/2020,WINDOWS程序开发 讲师:鲍钰,71,10/16/2020,WINDOWS程序开发 讲师:鲍钰,72,MFC框架的生成,10/16/2020,WINDOWS程序开发 讲师:鲍钰,73,MFC框架的生成:修改如下代码public:CMyFrame();,10/16/2020,WINDOWS程序开发 讲师:鲍钰,74,MFC框架的生成:添加如下
37、代码CString str=MFC Windows程序基础框架;Create(NULL,str);/创建主窗口,10/16/2020,WINDOWS程序开发 讲师:鲍钰,75,MFC框架的生成:添加如下代码BOOL InitInstance();,10/16/2020,WINDOWS程序开发 讲师:鲍钰,76,MFC框架的生成:添加如下代码#include MyFrame.h“CMyApp myApp;CMyApp:InitInstance()m_pMainWnd = new CMyFrame;m_pMainWnd-ShowWindow( m_nCmdShow );m_pMainWnd-UpdateWindow();return true;,10/16/2020,WINDOWS程序开发 讲师:鲍钰,77,MFC框架的生成结束!运行效果如下:例程见目录MFCBase,