VC++培训教程草稿(2000 年撰写) 张孝祥、袁龙友著
网址:http://www.it315.org
第 4 章 MFC 应用程序框架剖析
在进行一个 Windows 应用程序开发之前,首先需要选择一个开发环境。假定我们现在
只给出两种选择:一种是使用 Win32 应用程序编程接口的 C 语言程序;另一种是使用 MFC
应用程序框架的 C++语言程序。在这里,笔者并不想阐述这两种选择哪个更好,而是想通
过这两种开发环境的比较让读者更好的理解本章将要讲述的重点——MFC。
4.1 什么是 MFC 以及 MFC 的特点
只要使用过传统的 windows 编程方法开发应用程序的读者都深刻地体会到,即使是开
发一个简单的 windows 应用程序也需要对 windows 的内部编程原理有很深刻的认识,同时
也要手工编写很多的代码。用 C 直接编写 Windows API 应用程序,代码量是非常大的,因
为你所要照顾的细节太多了,更令人头疼的是,随着代码行数的增多,程序的可读性、可
维护性也大大的降低,因此,传统的 windows 编程是需要极大的耐心和丰富的编程经验的。
近几年来,面向对象技术无论是在理论还是实践上都在飞速地发展。面向对象技术中
最重要的就是“对象”的概念,它把现实世界中的人、机器等客观实体抽象成程序中的“对象”。
这种“对象”具有一定的属性和方法,这里的属性指对象本身的各种特性参数。如人的体重
机器的体积等,而方法是指对象本身所能执行的功能,如人能行走,机器能运作等。一个
具体的对象可以有许多的属性和方法,面向对象技术的重要特点就是对象的封装性,对于
外界而言,并不需要知道对象有哪些属性,也不需要知道对象本身的方法是如何实现的,
而只需要知道如何调用对象所提供的方法来完成特定的功能。从这里我们可以看出,当把
面向对象技术应用到程序设计中时,程序员只是在编写对象方法时才需要关心对象本身的
细节问题,大部分的时间是放在对对象的方法的调用上,组织这些对象进行协同工作。
MFC 的英文全称是 Microsoft Fundation Classes ,即微软的基本类库,它位于任何
Windows API 之上,在这个类库中包含了一百多个程序开发过程中最常用到的对象。它减
少了大量在建立 Windows 程序时必须编写的代码。同时它还提供了所有一般 C++ 编程的
优点,例如继承和封装。正是由于 MFC 编程方法充分利用了面向对象技术的优点,它使得
我们在编程时极少需要关心对象方法的实现细节,而只需要简单地调用已有对象的方法就
可以了。即使类库中的那些对象的方法不能满足我们的需要时,我们还可以利用面向对象
技术中很重要的“继承”方法从类库中的已有对象派生出我们自己的对象,这时派生出来的
对象除了具有类库中的对象的特性和功能之外,还可以由我们自己根据需要加上所需的特
性和方法,产生一个更专门的,功能更为强大的对象。这使得应用程序中程序员所需要编
写的代码大为减少,有力地保证了程序的良好的可调试性。 MFC 不仅给用户提供了
Windows 图形环境下应用程序的框架,而且还提供了创建应用程序的组件。
下面,我们将会通过一个实例来验证 MFC 的特点。还记得我们在第二章中讲过的那个
创建窗口的程序(EX02-00)吗?创建一个窗口然后在该窗口的顶端打印一条语句并响应
鼠标键盘消息,读者大概不会忘了,为了实现这个功能所要做的那些烦琐的步骤,包括创
建一个窗口类、注册类、创建窗口、刷新窗口、消息循环等等。下面,我们将利用 MFC 类
库功能模仿 AppWizard 建立一个这样的程序,看看它是怎么实现的。请看清单 4-00 中的代
码。
如果你是第一次看到这类程序,也许比较难理解,这没关系,我们后面会详细介绍。
现在你只要用 Visual C++ 环境中建立、编译和运行它就可以了。建立一个 Win32 程序(实
际上本节的这个程序并非一个真正 W32 程序,只是采用 W32 编程环境,利用 MFC 类库来
实现)的过程忘了吗?步骤同第二章所讲述的一样,只不过代码不同。
启动 Visual C++,打开 New Wizard 对话框,选择 Project 选项卡,在左边的窗口中选择