
2.3 MFC应用程序的创建
下面使用应用程序向导AppWizard建立一个MFC应用程序框架,程序运行效果如图2-29所示。

图2-29 MFC自动生成的应用程序框架运行的结果
[1] 在【File】菜单下选择【New】菜单项,弹出【New】对话框。
[2] 在【Projects】选项卡中,选择创建应用程序的类型为“MFC AppWizard(exe)”,在【Project name】文本框中输入新建的项目名“ex1_1”,在【Location】文本框中指定项目的存放目录,可以直接输入路径名,也可以按旁边的“...”按钮,选择一个路径,如图2-30所示。

图2-30 【New】对话框
[3] 单击按钮,系统将自动在指定目录下为新建项目创建一个与项目同名的文件夹。
[4] 在弹出的【MFC AppWizard - Step 1】对话框中,可以设置应用程序的类型,指定应用程序的结构是否采用文档/视图结构,以及资源文件所使用的语种等。本例中采用默认设置。如图2-31所示。

图2-31 【MFC AppWizard - Step1】对话框
应用程序的类型包括以下几种:
■ Single document:单文档应用程序。例如Windows附带的笔记本应用程序“Notepad”,一次只能打开一个文档。当选择打开另一文件【File】/【Open】时,当前打开的文件在新文件打开之前关闭。
■ Multiple documents:多文档应用程序。例如Microsoft office的“Excel”或“Word”,能同时打开多个文档。
■ Dialog based:基于对话框的应用程序,例如,计算器就是一个基于对话框的应用程序,它没有文档类和视图类。
应用程序资源文件所使用的语种可以通过下拉列表选择,在中国,一般都选用“中文[中国]”作为资源文件的语种。
[5] 设置好上述选项后,单击按钮,将弹出【MFC AppWizard - Step2 of 6】对话框,如图2-32所示。可以设置应用程序所使用的数据库支持,本例中采用默认设置。

图2-32 【MFC AppWizard - Step2 of 6】对话框
在该对话框中,应用程序所使用的数据库支持可以设置为以下值之一。
■ None:在应用程序中忽略所有的数据库支持。
■ Header files only:包括定义基本数据库类的头文件,但不创建对应特定表的数据库类或视图类。
■ Database view without file support:创建对应指定表的一个数据库类和一个视图类,不附加标准文件支持。
■ Database view with file support:创建对应指定表的一个数据库类和一个视图类,并附加标准文件支持。
[6] 单击按钮,将进入【MFC AppWizard - Step3 of 6】对话框,如图2-33所示。可以设置应用程序所支持的复合文档类型,例如,可以向应用程序中加入OLE支持。本例中采用默认设置。

图2-33 【MFC AppWizard - Step 3 of 6】对话框图2-34 【MFC AppWizard - Step 4 of 6】对话框
[7] 单击按钮,进入【MFC AppWizard - Step 4 of 6】对话框,如图2-34所示,可以设置应用程序的外观。
可以设置的选项如下:
■ Docking toolbar浮动工具栏。
■ Initial status bar初始状态栏。
■ Printing and print preview打印和打印预览。
■ Context-sensitive Help上下文相关帮助。
■ 3D controls使用3D控件。
■ MAPI(Messaging API)是否使用消息API,即应用程序能否利用MAPI来发送传真或其他消息。
■ Windows Sockets是否使用Windows套接字,即利用FTP或Http等协议,使应用程序可直接访问Internet。

在【MFC AppWizard - Step 4 of 6】对话框中还可以设置工具栏的外观,它可以是以下两个值之一:
■ Normal普通的工具栏。
■ Internet Explorer ReBars具有Internet Explorer风格的工具栏。
另外,还可以在【MFC AppWizard-Step 4 of 6】对话框中设置需要显示的最近使用的文件个数。在设置好上述选项后,单击按钮,进入下一步。
[8] 【MFC AppWizard - Step 5 of 6】对话框如图2-35所示,在这个对话框中可以设置应用程序的风格。本例采用默认设置。

图2-35 【MFC AppWizard - Step 5 of 6】对话框
应用程序的风格,可以是下面两个值之一:
■ MFC Standard标准的MFC应用程序。
■ Windows Explorer具有Windows Explorer风格的应用程序。
同时,还可以设置是否在应用程序向导生成的代码中加注释,可以是下面两个值之一:
■ Yes,please在向导生成的代码中加注释。
■ No,thanks you在向导生成的代码中不加注释。
另外,在这个对话框中还可以设置使用MFC库文件的方式,如:
■ As a shared DLL以共享动态链接库的方式使用MFC库文件。
■ As a statically linked library以静态链接库的方式使用MFC库文件。
[9] 单击按钮,进入【MFC AppWizard - Step 6 of 6】对话框,如图2-36所示。在这个对话框中可以设置向导生成的文件名和类名。本例采用默认设置。

图2-36 【MFC AppWizard - Step 6 of 6】对话框
[10] 设置好文件名和类名后,单击按钮,将弹出【New Project Information】对话框。该对话框中列出了新建的应用程序工程文件的相关信息,如图2-37所示。

图2-37 【New Project Information】对话框
如果信息有错,则单击按钮,并通过【AppWizard】的
按钮逐步返回,直到需重新设置的对话框为止。修改设置后,单击
按钮按步前进,进入复审【New Project Information】对话框。
[11] 确定项目信息正确无误后,单击按钮,按照设置生成应用程序。这个过程需要几分钟,因为近二十个文件的几百行代码中,包含了应用程序所需的菜单、对话框、帮助文本以及位图。这样,应用程序向导的所有工作就全部完成,并为用户生成了一个可执行的应用程序框架。编译并执行该程序,结果如图2-38所示。

图2-38 MFC自动生成的应用程序框架运行的结果