1、MFC编程.ppt_第1页
1、MFC编程.ppt_第2页
1、MFC编程.ppt_第3页
1、MFC编程.ppt_第4页
1、MFC编程.ppt_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MFC编程,Microsoft提供的MFC是放置Windows API的面向对象封装的类库。MFC(Microsoft Foundation Class)6.0版本封装了大约200个类,其中一些我们可以直接使用,而另一些则主要作为我们自己的类的基础类。一些MFC类极其简单,例如CPoint类,它代表一个点(如左键消息,画直线和椭圆)。有些类比较复杂,如:CWnd类,它封装了窗口的功能。在MFC程序中,我们并不经常直接调用Windows API;而是从MFC类的创建对象并调用属于这些对象的成员函数。,1、MFC概述,MFC(Microsoft Foundation Class)是一个应用程序的框

2、架结构。MFC不仅仅是一个类集合,它还帮助定义了应用程序的结构并为应用程序做了大量的辅助。MFC中的各种类结合起来构成了应用程序框架,它的目的是让开发者在此基础上来建立Windows下的应用程序。MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,开发者所要做的就是通过预定义的接口把具体的应用程序特有的内容完成。Microsoft Visual C+提供了相应的工具来完成这个工作。,(1)AppWizard可以用来生成初步的框架文件(代码和 资源等)。 (2)资源编辑器用来帮助直观地设计用户接口。 (3) ClassWizard用来协助添加代码到框架文件。 (4)最后,经过编译,通

3、过类库实现了应用程序特定的逻 辑。 如:在菜单中,添加菜单,点击后弹出新对话框,左键消息,画 直线、椭圆等 CDC *dc; dc=GetDC(); ReleaseDC(dc);,1.1、MFC编程的特点,传统的Windows编程是非常的麻烦和复杂的。从产生面向对象的程序设计后,对于编程者来说并需要知道对象有哪些属性,也不需要知道对象本身的方法是如何实现的,而只需要调用对象所提供的方法来完成特定的功能,尤其是对象的很多方法对系统进行了底层封装,大部分的精力放在对对象的方法的调用上。 MFC的本质是一个包含了许多微软已定义好的对象的类库,虽然我们要编写的程序在功能上是千差万别的,但从本质上讲,都

4、可以归结为用户界面的设计,对文件的操作、多媒体使用,数据库的访问等一些主要的方面。这一点是微软提供MFC类库的重要原因,在这个类库中包含了,一百多个 程序开发过程中最常用的对象。在进行程序设计 的时候,如果类库中的某个对象能完成所需要的功能,我们只要简单地调用已有对象的方法即可。我们还可以利用面向对象技术中很重要的继承方法从类库中的已有对象派生出我们自己的对象。这时派生出类的对象除了具有类库中的对象的特性和功能之外,还可以根据需要加上我们自己的特性和方法,产生一个功能更强大的对象。当然也可以在程序中创建全新的对象,并根据需要不断完善对象的功能。 正是由于MFC编程方法充分利用了面向对象技术的优

5、点,它使得编程时极少需要关心对象方法的实现细节,同时类库中的各种对象的强大功能足以完成我们程序中的绝大部分功能,这使得开发者所需编写的代码大为减少,有力保证了程序良好的可调试性。,1.2、MFC类的分层结构,MFC提供了许多设计好的类来满足广泛的需要。大多数MFC类都是从CObject类中直接或间接地派生出来的。 CObject给那些继承它的类提供了3个重要的特性: 串行化支持 运行时类信息支持 诊断和调试支持 串行化是对象的永久性数据流出或流入存储介质(如磁盘文件)的进程。把CObject类作为基类,可以创建可串行化的类,其实例容易存储和重新创建。嵌入在CObject类中的诊断和调试支持允许

6、我们对CObject派生类的实例执行有效性检查,并将状态信息转储到一个调试,窗口。 CObject对它的派生类还提供了其它好处。如:重载new和delete运算符防止内存泄露。如果从CObject派生类创建了一个对象,而没有在应用程序结束前删除它,那么MFC将会在调试输出窗口写一条警告信息。,1.3、MFC程序结构分析,MFC作为微软应用程序框架,举足轻重。MFC是C+的 Win32PAI。更重要的是它提供了文档/视图框架:sdk(Software Development Kit, 即软件开发工具包 )编程中的wndproc(窗口消息)也变成了方便的消息影射。 1)Windows程序的工作原理

7、 Windows程序设计是一种完全不同于传统的DOS方式的程序设计方法,它是一种事件驱动方式的程序设计模式。在程序提供给用户的界面中有许多可操作的可视对象。用户可进行操作,被选择的操作会产生某些特定的事件,这些事件发生后的结果是向程序中的某些对象发出消息,然后这些对象调用相应的消息处理函数来完成特定的操作。 Windows程序的最大特点是程序没有固定的流程,而是针对某个事件的处理有特定的子流程。 2)建立应用程序 按照应用程序向导,系统自动生成的应用程序框架,我们要做的事情就是向这个应用程序中添加必要的代码以完成我们所需的功能。 3)程序结构分析 使用MFC方式产生的应用程序的4个主要类之间的

8、关系: CMYAPP类:用来处理消息的,它统一管理程序收到的所有消息,然后把消息分配到相应的对象中。CMAINFRAME是CMYVIEW的父类,也就是说视窗VIEW显示在主窗口CMAINFRAME的客户区中。类CMYVIEW的作用是显示数据,而数据则是来自类CMYDOC,在MFC程序中,程序的数据是放在文档中的,而显示数据则是利用视窗方式,文档与视窗分离带来的好处就是一个文档可以同时具有多个视窗,每个视窗只显示文档中的一部分数据,或者以特定的风格显示文档的数据。文档与视窗分离的另一个好处是程序中可以处理多个文档,通过对不同视窗的处理达到对不同文档分别处理的目的。 (1)类CMYAPP 类CMY

9、APP是应用程序运行的基础,这个类是由MFC中的类CWINAPP派生来的。在这个类中有一个重要的成员函数InitInstance,这个函数的作用是在生成一个新的实例的时候,完成一些初始化的工作。 类CMYAPP提供了用户与Windows应用程序之间的交流。在生成这个类的对象后,这个对象自动地把自身与Windows系统建立联系,接收Windows传送的消息,并交给程序中相应的对象去处理,使得开发Windows程序变的简单。,(2)类CMAINFRAME 类CMAINFRAME是MFC中的CFRAMEWND派生的, 所以它也是一个框架窗口。前面提到类CMAINFRAME是类CMYVIEW的父类,也

10、就是说CMYVIEW类对象显示在主框架窗口的客户区中。 在MFC程序中,我们并不需要经常对类CMAINFRAME进行操作,而是对视窗类进行操作,达到对程序中的数据进行编辑和修改的目的。 (3)类CMYVIEW与CMYDOC 把这两个类放在一起介绍,是因为这两个类密切相关。文档是由文档模板对象生成的,并由应用程序对象管理,而用户则是通过与文档相联系的视窗对象来存储、管理应用程序数据,用户与文档之间的交互则是通过则是通过与文档相关联的视窗对象来进行的。,1.4 MFC中的WinMain函数,WinMain是Windows程序执行的入口,与DOS程序的入口main的作用相同,在MFC程序中, Win

11、Main函数是隐藏的,当WinMain函数结束或返回时,Windows应用程序结束。,1.5 MFC库消息影射,MFC库应用框架并没有采用虚函数来处理Windows消息,而是通过一些宏来将特定的消息影射到派生类中相应的成员函数。 ClassWizard会帮助我们将消息控制函数引入我们所设计的类中,只要我们从列表框中选择一个Windows消息ID, ClassWizard会自动产生具有正确参数及返回值的代码。,2 利用MFC AppWizard自动生成应用程序,Visual C+6.0集成环境所提供的可视化编程工具(AppWizard和ClassWizard等)自动生成大量代码,快速进入可视化的

12、编程。 在Visual C+6.0集成环境中,工程是置于工作区的管理下,一个工作区可以管理多个工程,甚至不同类型的工程。同一个工作区中的工程之间相互独立,但共用一个工作区的设置环境。在新建一个工程时,可以选择是为该工程新建一个工作区还是加入当前工作区。,2.1 Visual C+工程文件的组成,在用AppWizard创建的工程中包含了框架程序所有的类、全局变量的声明和定义。如果用Windows资源管理器查看AppWizard工具自动创建的工作目录,可以发现该目录下会生成十几个文件和两个目录,其中res目录用于存放工程的资源文件。Debug目录用于存放编译、连接时产生的中间文件。 AppWiza

13、rd所创建的文件可以在指定的工程路径下找到,每一种文件都有自己明确的作用 1)工作区文件和项目文件 工作区文件和项目区文件主要是用于保存和更新工作区和项目信息,主要包括下面几个文件:,(1)TestMFC.dsw:这是MFC自动生成的工作区文件,它 包含当前工作区中的项目信息。 (2)TestMFC.dsp:这是MFC生成的项目文件,它包含当前项目的设置、所包含的文件等信息。 (3)TestMFC.clw:此文件包含ClassWizard中用来编辑的现有类或增加新类的信息。 ClassWizard还用这个文件来保存创建和编辑消息影射和对话框数据所需的信息,或是创建虚拟成员函数所需的信息。 2)应用程序源文件和头文件 根据应用程序的类型-单文档、多文档或基于对话框的类型,AppWizard将创建下术应用程序源文件和头文件中的某些文件,这些文件是工程的主体,负责主框架、文档、视图和相关操作的具体实现,主要包括下面几个方面。,(1)TestMFC.h:这是应用程序的主头文件,它包含所有全局符号和用于包含其它头文件的#include指令。 (2)TestMFC.cpp:这个文件是应用程序的主源文件,它将创建CTestApp类的一个对象,并覆盖InitInstance 成员函数。 (3)TestMFCDoc.cpp、Test

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论