MFC(Microsoft Foundation Class,微软基础类库)是微软为了简化程序员的开发工作所开发的一套C++类的集合,是一套面向对象的函数库,以类的方式提供给用户使用。利用这些类,可以有效地帮助程序员完成Windows应用程序的开发。
使用MFC编写应用程序,意味着要接受一种特有的程序结构,其中应用程序数据是以特定的方式存储和处理的。这一点听起来好像是一种,但实际上几乎完全不是;而且,在速度和实现的简易性方面得到的好处远远超过了任何能够想象到的缺点。MFC程序的结构包括两个面向应用的的实体-文档和视图。
文档/视图结构的基本出发点是将数据处理和数据的显示相分离,使每个类都能够集中处理某一功能。在文档/视图结构中,有关数据处理的工作可以分为数据的管理和数据的可视化两部分,文档用于管理和数据,视图用于显示和编辑数据。
文档在MFC应用程序中代表了能够被逻辑地组合在一起的一系列数据,包括文本、图形、图像和表格数据,其主要作用是把数据的处理从对用户界面的处理中分离出来,以便集中处理数据,并同时提供了一些与其他类交互的接口。
文档是应用程序中与用户交互的数据集合。虽然文档这个词语意味着某种文本的本质,但文档绝不仅仅限于文本。文档实际上可以是游戏数据、几何模型、文本文件、以及其它的一些数据集合,或者是任何我们需要的事物。文档这个术语只是一种方便的标签,表示作为整体对待的应用程序中的应用数据。
程序中的文档是作为文档类的对象定义的。文档类是从MFC库中的CDocument类派生的,需要添加数据来存储应用程序需要的数据,还要添加函数来支持对数据的处理。应用程序不仅限于单文档类型;当应用程序中涉及若干不同种类的文档时,可以定义多个文档类。
以这种方式处理应用程序数据使MFC能够提供标准的机制来管理作为整体的应用程序数据集合,并在磁盘上存储这些数据。这些机制是文档类从CDocument类中继承的,因此在不编写任何代码的情况下,就能使应用程序自动获得大量功能。
可以选择让程序每次只处理一个文档,还是处理多个文档。MFC库支持的单文档界面(Single Document Intece, SDI),用于每次只需要打开一个文档的程序。使用这种界面的程序称为SDI应用程序。
对于需要一次打开多个文档的程序而言,保以使用多文档界面(Multiple Document Intece, MDI).使用MDI,程序不仅能够打开类型相同的多个文档,还可以同时处理多个类型不同的文档。在MDI应用程序中,各个文档都显示在应用程序窗口的一个子窗口中。
视图是文档数据在屏幕上的映像,用户可以通过视图查看文档,也可以通过视图修改文档,一个视图总是与一个文档对象相关联,用户通过与文档相关联的视图与文档进行交互,当用户打开一个文档时,应用程序创建与之相关联的视图,但一个文档可以拥有多个视图。
视图总是与特定的文档对象相关。文档对象包含程序中的一组应用数据,而视图对象可以提供一种机制来显示文档中存储的部分或全部数据。视图定义了在窗口中显示数据的方式以及与用户交互的方式。从MFC类CView派生就可以定义自己的视图类。
MFC AppWizard应用程序向导是一个创建基于微软基础类库MFC的Windows应用程序的向导,是VC最常用的向导工具,当用其创建一个项目时,可以自动生成一个MFC的应用程序框架。MFC将每个应用程序共同需要使用的代码封装起来,如完成默认程序初始化功能,建立应用程序界面和基本的Windows消息,简化程序员做相同的重复工作。
MFC应用程序向导是一个代码生成器,其能够创建一个是简单的应用程序框架,该框架的结构和内容取决于在AppWizard向导中所做的选择,AppWizard可以生成一个带有类名、源代码文件的Windows应用程序的框架。
Single document(单文档),为应用程序创建一个单文档界面(SDI)结构。在此类应用程序中,文档的框架窗口只能容纳一个文档,也就是一次只允许在程序中打开一个文件,如记事本就是一个单文档应用程序。
Multiple documents(多文档),为应用程序创建一个多文档界面(MDI)结构。在此类应用程序中,文档的框架窗口可以容纳多个文档,也就是一次允许在程序中打开多个文件,如Word就是一个多文档应用程序。
应用程序向导会根据应用程序的类型(单文档、多文档或基于对话框的程序)自动生成一些头文件和源文件。头文件用于定义类,包括指明基类、声明变量和函数。源文件用来实现类,主要定义函数的实现代码和消息机制。