上一页 下一页 返回

3.1 编写第一个窗口程序

    现在我们开始编写全书的第一个程序。跟我们以前学习程序设计的方法不同(以前我们是输入完整程序,然后运行),我们首先利用Visual Studio的可视化编程工具AppWizard生成框架程序,再往里边填写代码。这是一种“填空式”的编程方法:首先生成框架,然后根据目标程序的要求,看哪些地方需要修改,再往里填写代码。类似其他语言,我们把第一个程序命名为Hello。

    首先启动AppWizard:在File菜单下选择New,弹出New对话框,如图3.1所示。

T3_1.tif (367480 bytes)

图3.1 New对话框

    在对话框顶部有一排标签,用于选择要创建的文档的类型。选择Projects标签,然后在列表中选择MFC AppWizard(exe),告诉Visual C++要使用AppWizard创建一个EXE程序;在Project Name编辑框中输入工程文件名Hello,在Location中指定应用程序创建的位置,缺省情况下AppWizard会自动在当前目录下以工程文件名为名字创建一个新目录,在该目录下存放所有该工程的文件。这里将目录设置为“C:\Hello”,然后选择OK按钮,此时弹出MFC-AppWizard-Step1对话框,如图3.2所示。

T3_2.tif (300972 bytes)

图3.2 MFC AppWizard-Step 1对话框

    AppWizard是一个自动化程序生成工具,它通过提示用户一系列对话框,来指定将要生成的应用程序的特性,然后自动生成相应的代码。下面,我们一步一步演示如何用AppWizard生成Hello程序。

    1.MFC AppWizard当前显示MFC AppWizard-Step1对话框。在这个对话框中,可以指定生成框架的类型,包括Single Document(单文档),Multiple Document(多文档),Dialog Based(基于对话框)三种。还可以从下拉列表框中选择语言,指定程序资源文件使用的语言类型。选择Single Document,此时AppWizard将生成一个单文档的应用程序框架,也就是说,应用程序运行时是一个单窗口的界面。点击Next按钮。

T3_3.tif (296952 bytes)

图3.3 MFC AppWizard-Step 2 of 6对话框

    2.此时MFC AppWizard显示图3.3所示MFC AppWizard-Step 2 of 6对话框。该对话框用于指定数据库选项。MFC AppWizard支持数据库并可以生成数据库应用程序所必需的代码。选择缺省值None,不使用数据库特性。点击Next按钮,弹出MFC AppWizard-Step3对话框,如图3.4所示。

T3_4.tif (298033 bytes)

图3.4 MFC AppWizard-Step 3 of 6对话框

    3.在MFC AppWizard-Step 3 of 6对话框中,可以指定OLE选项的复合文档类型。因为我们不用OLE特性,所以使用缺省值None。点击Next按钮,进入下一个对话框。此时,屏幕显示MFC-AppWizard-Step 4 of 6对话框,如图3.5。

T3_5.tif (299042 bytes)

图3.5 MFC AppWizard-Step 4 of 6对话框

    4.第四个对话框用于指定应用程序的外观,包括是否使用工具条、状态栏,是否让文档支持打印和打印预览功能,是否使用3D控制外观,以及是否支持在线帮助等。MFC AppWizard还支持WOSA(Windows开放系统体系结构),可以直接在基于文档的程序中加入MAPI电子邮件发送功能和WinSocket网络编程接口支持。另外,还可以指定文档的一些特性,包括后缀名等。有关文档/视结构的内容在后面章节中再作详细介绍。按照图3.5所示,设置各个选项,它支持工具条、状态栏,使用3D外观的控制。点击Next按钮,弹出MFC AppWizard 5 of 6对话框,如图3.6所示。

T3_6.tif (296952 bytes)

图3.6 MFC AppWizard-Step 5 of 6对话框

    5.MFC AppWizard 5of 6有两个选项,让用户设置生成源代码的选项及编译选项。

    第一个选项是:Would you like to generate source file comments?询问MFC AppWizard是否为生成的源代码添加必要的注释说明。注释说明有助于对应用程序源代码的学习和理解,因此一般选择“Yes,Please”。

    第二个选项是:How would you like to use the MFC library?

    用户可以选择As a shared DLL(使用共享动态连接库)或As a static linked library(静态连接库)。使用DLL时,所有MFC的类存放在动态连接库中,因此可以使应用程序小一些,但是发布该应用程序可执行文件时必需随同提供必要的动态连接库。使用静态库时,应用程序所用到的MFC类都编译进了可执行文件之中,因此可执行文件比使用DLL方式的要大,但可以单独发行。一般的,对于小的应用程序可以采用静态库方式,对于大的应用程序一般采用动态连接库方式。本书中的例子全部采用动态连接库选项(As a shared DLL)。

    6.点击Next按钮以进入MFC AppWizard的最后一个对话框。此时,将出现如图3.7所示的对话框。

T3_7.tif (298180 bytes)

图3.7 MFC AppWizard-Step 6 of 6对话框

    该对话框让用户选择MFC AppWizard将要创建的类的属性,包括指定存放类的文件名以及这些类的基类。在这一步,用户可以修改所创建的类的名字、对应的文件以及赖以派生的父类。对于Hello程序,直接对话框中的使用缺省设置。

    7.点Finish按钮,弹出New Project Information对话框。它给出一个关于即将生成的应用程序的总体描述,包括应用程序类型(单文档)、要创建的类及所在文件、应用程序的一些特性(是否支持工具条、状态栏等)。按Enter键或点OK按钮,此时AppWizard将在c:\hello目录下生成Hello程序所有的框架文件。生成程序后,在项目工作区中自动打开Hello.dsw项目工作区文件。窗口标题将显示打开的项目名Hello。