MFC(Microsoft Foundation Class,微软基础类库)是微软为了简化程序员的开发工作所开发的一套C 类的集合,是一套面向对象的函数库,以类的方式提供给用户使用。利用这些类,可以有效地帮助程序员完成Windows应用程序的开发。
MFC应用程序框架是一个标准的Windows应用程序,包括窗口、菜单栏、工具栏。
1 MFC的文档/视图概念使用MFC编写应用程序,意味着要接受一种特有的程序结构,其中应用程序数据是以特定的方式存储和处理的。这一点听起来好像是一种限制,但实际上几乎完全不是;而且,在速度和实现的简易性方面得到的好处远远超过了任何能够想象到的缺点。MFC程序的结构包括两个面向应用的的实体-文档和视图。
文档/视图结构的基本出发点是将数据处理和数据的显示相分离,使每个类都能够集中处理某一功能。在文档/视图结构中,有关数据处理的工作可以分为数据的管理和数据的可视化两部分,文档用于管理和维护数据,视图用于显示和编辑数据。
文档在MFC应用程序中代表了能够被逻辑地组合在一起的一系列数据,包括文本、图形、图像和表格数据,其主要作用是把数据的处理从对用户界面的处理中分离出来,以便集中处理数据,并同时提供了一些与其他类交互的接口。
文档是应用程序中与用户交互的数据集合。虽然“文档”这个词语意味着某种文本的本质,但文档绝不仅仅限于文本。文档实际上可以是游戏数据、几何模型、文本文件、以及其它的一些数据集合,或者是任何我们需要的事物。“文档”这个术语只是一种方便的标签,表示作为整体对待的应用程序中的应用数据。
程序中的文档是作为文档类的对象定义的。文档类是从MFC库中的CDocument类派生的,需要添加数据成员来存储应用程序需要的数据,还要添加成员函数来支持对数据的处理。应用程序不仅限于单文档类型;当应用程序中涉及若干不同种类的文档时,可以定义多个文档类。
文档类实际上就是数据类,在应用程序中对数据的操作主要是在这个类中实现的,如数据的读取、存储等,都可以在文档类中实现。视图对象是用来显示文档对象的内容。
以这种方式处理应用程序数据使MFC能够提供标准的机制来管理作为整体的应用程序数据集合,并在磁盘上存储这些数据。这些机制是文档类从CDocument类中继承的,因此在不编写任何代码的情况下,就能使应用程序自动获得大量功能。
可以选择让程序每次只处理一个文档,还是处理多个文档。MFC库支持的单文档界面(Single Document Interface, SDI),用于每次只需要打开一个文档的程序。使用这种界面的程序称为SDI应用程序。
对于需要一次打开多个文档的程序而言,保以使用多文档界面(Multiple Document Interface, MDI).使用MDI,程序不仅能够打开类型相同的多个文档,还可以同时处理多个类型不同的文档。在MDI应用程序中,各个文档都显示在应用程序窗口的一个子窗口中。
视图是文档数据在屏幕上的映像,用户可以通过视图查看文档,也可以通过视图修改文档,一个视图总是与一个文档对象相关联,用户通过与文档相关联的视图与文档进行交互,当用户打开一个文档时,应用程序创建与之相关联的视图,但一个文档可以拥有多个视图。
视图总是与特定的文档对象相关。文档对象包含程序中的一组应用数据,而视图对象可以提供一种机制来显示文档中存储的部分或全部数据。视图定义了在窗口中显示数据的方式以及与用户交互的方式。从MFC类CView派生就可以定义自己的视图类。
对话框程序没有视图窗口和文档对象等概念,这类程序通常是在对话框上放置控件,然后通过控件的操作和用户交互。
2 VC 工具组件2.1 C/C 编译器
2.2 资源编辑器和资源编译器
2.3 链接器和调试器
2.4 应用程序向导
2.5 类向导
2.6 资源浏览器
3 基于MFC的Windows程序开发的4种工具3.1 首先使用MFC AppWizard向导来创建基本的程序代码;
3.2 在Class View中使用项目的上下文菜单,给项目添加新的类和资源;
3.3 在Class View中使用项目的上下文菜单,扩展并定制程序中已有的类。主要是添加变量和函数;
3.4 使用Resource Editor创建或修改菜单和工具栏这样的对象。
创建MFC应用程序的最容易方法是使用MFC应用程序向导,根据在向导中选择的选项,MFC应用程序向导为应用程序生成适当的类和文件。
4 MFC应用程序向导主要步骤MFC AppWizard应用程序向导是一个创建基于微软基础类库MFC的Windows应用程序的向导,是VC最常用的向导工具,当用其创建一个项目时,可以自动生成一个MFC的应用程序框架。MFC将每个应用程序共同需要使用的代码封装起来,如完成默认程序初始化功能,建立应用程序界面和基本的Windows消息,简化程序员做相同的重复工作。
MFC应用程序向导的每一个步骤中,我们都可以根据需要来选择各种特性,从而实现定制应用程序。
主要步骤如下:
4.1 选择MFC应用程序向导:MFC AppWizard[exe]
MFC应用程序向导是一个代码生成器,其能够创建一个是简单的应用程序框架,该框架的结构和内容取决于在AppWizard向导中所做的选择,AppWizard可以生成一个带有类名、源代码文件的Windows应用程序的框架。
4.2 选择应用程序类型
Single document(单文档),为应用程序创建一个单文档界面(SDI)结构。在此类应用程序中,文档的框架窗口只能容纳一个文档,也就是一次只允许在程序中打开一个文件,如记事本就是一个单文档应用程序。
Multiple documents(多文档),为应用程序创建一个多文档界面(MDI)结构。在此类应用程序中,文档的框架窗口可以容纳多个文档,也就是一次允许在程序中打开多个文件,如Word就是一个多文档应用程序。
Dialog based(基于对话框),为应用程序创建一个基于对话框架构。一些简单的工具一般采用基于对话框的形式,需要处理的数据一般包含在诸如编辑框、复选框、单选按钮等控件中。
4.3 是否选择数据库支持;
4.4 选择复合文档类型及其它支持;
4.5 选择用户界面功能,如工具栏、状态栏等;
4.6 选择工程样式和MFC类库使用方式;
4.7 提示建立的类;
通过上述步骤所做的选择,确定的应用的类型、界面、功能。
应用程序向导在创建可执行程序时必须首先创建一个项目,并为此项目生成一系列文件,如头文件、源文件和资源文件等。这些文件都放在项目文件夹内,它们各自发挥着不同的作用,如下表所示:
文件后缀名 | 文件类型 | 主要作用 |
dsw | 工作区文件 | 将项目的详细情况组合到Workspace工作区中 |
dsp | 项目文件 | 存储项目的详细情况并代替mak文件 |
h | C 头文件 | 存储类的定义代码 |
cpp | C 源文件 | 存储类的成员函数的实现代码 |
rc | 资源脚本文件 | 存储菜单、工具栏和对话框等资源 |
rc2 | 资源文件 | 用来将资源包含到项目中 |
ico | 图标文件 | 存储应用程序图标 |
bmp | 位图文件 | 存储位图 |
clw | ClassWizar类向导文件 | 存储Class Wizard类向导使用的类信息 |
nc | 没有编译的浏览文件 | 保留Class View和Class Wizar使用的详细情况 |
应用程序向导会根据应用程序的类型(单文档、多文档或基于对话框的程序)自动生成一些头文件和源文件。头文件用于定义类,包括指明基类、声明成员变量和成员函数。源文件用来实现类,主要定义成员函数的实现代码和消息机制。
主要包括:
框架窗口类
文档类
视图类
应用程序类
资源类
在一个VC项目中,资源通过资源标识符加以区别,如下表列出 MFC所规定的资源标识符前缀所表示的资源类型:
资源标识符前缀 | 说明 |
IDR_ | 主菜单、工具栏、应用程序图标和快捷键表 |
IDD_ | 对话框 |
IDC_ | 控件和光标 |
IDS_ | 字符串 |
IDP_ | 提示信息对话框的字符串 |
ID_ | 菜单命令项 |