3.2.3 Visual C++(www.cppentry.com)工程文件的组成 在用AppWizard创建的工程中包含了框架程序所有的类、全局变量的声明和定义。如果用Windows资源管理器查看AppWizard工具自动创建的工作目录,可以发现该目录下会生成十几个文件和两个目录,其中res目录用于存放工程的资源文件。Debug目录用于存放编译、连接时产生的中间文件。 在Visual C++(www.cppentry.com)中,一个工程文件可以产生两种不同版本的可执行程序:Debug版本和Release版本。其中Debug版本中包含用于调试的信息和代码。而Release版本中由于不包含调试信息,所以不能进行调试,但其最终产生的文件更小。 根据选项设置的不同,AppWizard所创建的文件会略有不同。标准的AppWizard文件包括下面几个部分: 工作区文件和项目文件; 应用程序源文件和头文件; 资源文件; 预编译文件。 AppWizard所创建的文件可以在指定的工程路径下找到,每一种文件都有自己明确的作用,下面我们来分别介绍这些文件的作用。 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)MainFrm.cpp、MainFrm.h:这两个文件从CFrameWnd(SDI应用程序)或CMDIFramWnd(MDI应用程序)派生CMainFrme类。如果在AppWizard的Application Options页中选择了对应的可选项的话,CMainFrme类将处理工具条按钮和状态条的创建。MainFrm.cpp文件中还包含MFC应用程序提供的默认工具条按钮的对象ID——buttons数组。 (4)TestMFCDoc.cpp、TestMFCDoc.h:这两个文件从CDocument类派生并实现名为CTestMFCDoc的文档类,并含有用于初始化文档、串行化(保存和装入)文档和用于调试诊断的一些成员函数的框架。 (5)TestMFCView.cpp、TestMFCView.h:这些文件派生并实现名为CTestMFCView的视类,用于显示和打印文档数据。TestMFCView类是从CView或它的派生类派生出来的,含有绘制视图和用于调试诊断的一些成员函数框架。 3.资源文件预编译头文件 基于MFC的Windows应用程序一般都少不了应用程序资源的支持,AppWizard会创建一些与资源相关的文件,同时,与MFC应用程序相关的预编辑头文件也会被创建。 (1)TestMFC.rc、Resource.h:这是项目头文件及资源文件。资源文件含有一般MFC应用程序的默认菜单定义和加速键表、字符串表,还指定了默认的About对话框和一个图表文件(res\TestMFC.ico)。资源文件是标准的MFC类资源,如果指定了支持工具条,它还将指定工具条位图文件(res\toolbar.bmp)。 (2)stdafx.cpp、stdafx.h:这两个文件用于建立一个预编译的头文件TestMFC.pch和一个预定义的类型文件stdafx.obj。由于MFC体系结构非常大,包含许多头文件,如果每次都编译的话比较费时,依次把常用的MFC头文件都放在stdafx.h中,如afxwin.h、afxext.h、afxdisp.h、afxcmn.h等,然后让stdafx.cpp包含这个stdafx.h文件。这样,由于编译器可以识别哪些文件已经编译过,所以stdafx.cpp就只编译一次,并生成所谓的预编译头文件(因为它存放的是头文件编译后的信息)。如果以后在编程(www.cppentry.com)时不想让有些MFC头文件每次都被编译,也可以将它加入到stdafx.h中。采用预编译头文件可以加速编译过程。
【责任编辑: 雪花 TEL:(010)68476606-8007】
|