上一页 下一页 返回

3.2 AppWizard所创建的文件

  AppWizard在读者指定的C:\Hello目录下创建了许多文件,这些文件包含了框架程序的所有的类、全局变量的声明和定义。初学者面对这一大堆文件可能会不知所措。现在我们把各个文件的作用及对应的类介绍一下。
  根据可选项,AppWizard所创建的文件会略有不同。标准的AppWizard文件包括:

  • 工作区文件、项目文件和make文件

  • 应用程序源文件和头文件

  • 资源文件

  • 预编译头文件

  • 按可选项增加的AppWizard文件

 

3.2.1 工作区、项目文件和make文件

Hello.dsw
  这是MFC自动生成的工作区文件,它包含当前工作区所包含的项目的信息。

Hello.dsp
  这是MFC生成的项目文件,它包含当前项目的设置、所包含的文件等信息。

Hello.MAK
  这是MFC项目的项目文件,这也是与NMAKE兼容的文件。如果选择了External make文件可选项,则可人工对它编辑,但不能利用Visual C++许多项目编辑特性。

Hello.CLW
  这个文件含有被ClassWizard用来编辑现有类或增加新类的信息。ClassWizard还用这个文件来保存创建和编辑消息映射和对话框数据所需的信息,或是创建虚拟成员函数所需的信息。

3.2.2 应用程序源文件和头文件

  根据应用程序的类型—单文档、多文档或基于对话框的,AppWizard将创建下述应用程序源文件和头文件中的某些文件。在本例中,AppWizard生成了如下文件:

Hello.h
  这是应用程序的主头文件,它含有所有全局符号和用于包含其它头文件的#include伪指令。

Hello.CPP
  这个文件是应用程序的主源文件。它将创建CHelloApp类的一个对象(从CWinApp派生),并覆盖InitInstance成员函数。

MainFrm.cpp,MainFrm.h
  这两个文件将从CFrameWnd(SDI应用程序)或CMDIFrameWnd(MDI应用程序)派生CMainFrame类。如果在AppWizard的Application Options页(6步中的第4步)中选择了对应的可选项的话,CMainFrame类将处理工具条按钮和状态条的创建。MAINFRM.CPP文件还含有MFC应用程序提供的默认工具条按钮的对象ID——叫做buttons数组。

HelloDoc.cpp,HelloDoc.h
  这些文件从CDocument类派生并实现名为CHelloDoc的文档类,并含有用于初始化文档、串行化(保存和装入)文档和用于调试诊断的一些成员函数的框架。

HelloView.cpp,HelloView.h
  这些文件派生并实现名为CHelloView的视类,用于显示和打印文档数据。CHelloView类是从CView或它的派生类派生出来的,含有绘制视和用于调试诊断的一些成员函数框架。

3.2.3 资源文件

AppWizard会创建一些与资源相关的文件。

Hello.RC,RESOURCE.H,Hello.rc2
  这是项目的头文件及其资源文件。资源文件含有一般MFC应用程序的默认菜单定义和加速键表、字符串表。它还指定了缺省的About对话框和一个图标文件(RES\Hello. ICO)。资源文件了标准的MFC类的资源。如果指定了支持工具条,它还将指定工具条位图文件(RES\TOOLBAR.BMP)。Hello.rc2用于存放Visual Studio不可直接编辑的资源。

3.2.4 预编译头文件:STDAFX.CPP,STDAFX.H

  这两个文件用于建立一个预编译的头文件Hello.PCH和一个预定义的类型文件STDAFX.OBJ。由于MFC体系结构非常大,包含许多头文件,如果每次都编译的话比较费时。因此,我们把常用的MFC头文件都放在stdafx.h中,如afxwin.h、afxext.h、afxdisp.h、afxcmn.h等,然后让stdafx.cpp包含这个stdafx.h文件。这样,由于编译器可以识别哪些文件已经编译过,所以stdafx.cpp就只编译一次,并生成所谓的预编译头文件(因为它存放的是头文件编译后的信息,故名)。如果读者以后在编程时不想让有些MFC头文件每次都被编译,也可以将它加入到stdafx.h中。采用预编译头文件可以加速编译过程。