
2.3.1 创建应用程序
使用Visual Studio 2005应用程序向导可以生成单文档界面、多文档界面和基于对话框的应用程序,具体操作流程如下:
1 打开Visual Studio 2005,依次选择“文件”|“新建”|“项目”命令,弹出“新建项目”对话框。在其中可以设置项目的类型,这里选择“MFC”,如图2-29所示。

图2-29 “新建项目”对话框
2 在如图2-29所示的“新建项目”对话框中分别设置此项目的名称和保存位置。
3 单击“确定”按钮,弹出“MFC应用程序向导”对话框,如图2-30所示。

图2-30 “MFC应用程序向导”对话框
4 单击“下一步”按钮,弹出“应用程序类型”对话框,在其中可以选择此项目的“应用程序类型”和“项目类型”,如图2-31所示。

图2-31 “应用程序类型”对话框
在如图2-31所示的界面中,有以下几个选项。
• 应用程序类型:指示要在应用程序中创建的文档支持类型。选择的应用程序类型决定应用程序可用的用户界面选项。MFC共有4种应用程序界面样式供用户选择,具体说明如表2-3所示。
表2-3 应用程序类型

• 项目类型:指示应用程序是具有Windows资源管理器结构和显示,还是具有标准MFC结构和显示。有两个选项,具体说明如表2-4所示。
表2-4 项目样式选项说明

• MFC的使用:设置如何链接到MFC库。默认情况下,MFC作为共享DLL链接。有两个选项,具体说明如表2-5所示。
表2-5 项目样式选项说明

• 文档/视图结构支持:使用CDocument和CView基类在应用程序中包含文档/视图结构支持(默认值)。如果正在移植非MFC应用程序,或者如果想减少已编译的可执行文件的大小,则取消勾选此复选框。默认情况下,无文档/视图结构的应用程序从CWinApp导出,并且不包含用于从磁盘文件中打开文档的MFC支持。
• 使用HTML对话框:只适用于对话框应用程序。从CDHtmlDialog导出对话框类,而不是从CDialog导出。如果选择此复选框,CDHtmlDialog列在向导的生成类页的“基类”框中。CDHtmlDialog导出的对话框显示基于HTML的对话框、与HTML控件进行数据交换并处理HTML事件。
• 资源语言:为资源设置要使用的语言。列表显示系统中由Visual Studio安装的可用语言。如果要选择系统语言以外的语言,则必须已经安装了该语言的适当模板文件夹。关于安装“资源语言”列表中可用默认语言以外语言资源的更多信息,请参见其他语言的向导支持。选择的语言反映在向导的文档模板字符串页的“本地化字符串”选项中。
5 选择了图2-31中的选项后单击“下一步”按钮,弹出“复合文档支持”对话框。在其中可以选择此项目的复合文档支持项,如图2-32所示。

图2-32 “复合文档支持”对话框
“复合文档支持”共有5个选项,具体说明如表2-6所示。
表2-6 复合文档支持说明

6 选择“无”单选按钮后单击“下一步”按钮,弹出“文档模板字符串”对话框。在其中可以分别设置“非本地化字符串”选项和“本地化字符串”选项,如图2-33所示。

图2-33 “文档模板字符串”对话框
• 非本地化字符串:应用于创建用户文档的应用程序。如果提供文件扩展名和文件类型ID,用户可以更容易地打开、打印和保存文档。这些项由系统而非用户使用,因此没有本地化。非本地化字符串有两个选项,具体说明如表2-7所示。
表2-7 非本地化字符串选项说明

• 本地化字符串:生成与应用程序用户读取和使用的应用程序及文档关联的字符串,因此字符串被本地化。本地化字符串有6个选项,具体说明如表2-8所示。
表2-8 本地化字符串选项说明

根据上述说明,在“文件扩展名”中输入“mfc”。
7 单击“下一步”按钮弹出“数据库支持”对话框,如图2-34所示。

图2-34 “数据库支持”对话框
“数据库支持”有4个选项,具体说明如表2-9所示。
表2-9 数据库支持选项说明

8 选择“无”单选按钮后单击“下一步”按钮,弹出“用户界面功能”对话框,如图2-35所示。

图2-35 “用户界面功能”对话框
在此对话框中有3个选项区域。
• 主框架样式:设置应用程序的主窗口框架功能,各子选项的具体说明如表2-10所示。
表2-10 主框架样式选项说明

• 子框架样式:指定应用程序中子框架的外观和初始状态,子框架样式仅对MDI应用程序可用。各子选项的具体说明如表2-11所示。
表2-11 子框架样式选项说明

• 工具栏:指示应用程序是否包含工具栏,对基于对话框的应用程序不可用。各子选项的具体说明如表2-12所示。
表2-12 工具栏选项说明

9 单击“下一步”按钮弹出“高级功能”对话框,此界面提供应用程序的附加功能选项,如“帮助”、打印支持等。在每个部分指定这些高级功能的附加支持,如图2-36所示。

图2-36 “高级功能”对话框
各个选项的具体说明如下。
• 区分上下文的帮助:生成一套区分上下文帮助的帮助文件,可通过F1键和“帮助”菜单或者对话框上的“帮助”按钮获得。帮助支持需要帮助编译器,如果没有帮助编译器,可以通过运行安装程序安装它。一旦指出需要帮助,则需选择应用程序的帮助格式,所选择的格式将决定向导创建的起始文件格式。有关为项目添加帮助文件而创建的文件说明,请在解决方案资源管理器中参阅项目的ReadMe.txt。区分上下文的帮助有两个子选项,具体说明如表2-13所示。
表2-13 区分上下文的帮助选项说明

• 打印和打印预览:通过从MFC库调用CView类中的成员函数,生成处理打印、打印设置和打印预览命令的代码。向导也向应用程序的菜单添加这些函数的命令。打印支持仅对在向导的“应用程序类型”界面中指定“文档/视图结构支持”的应用程序可用。默认情况下,文档/视图应用程序有打印支持。
• 自动化:指定应用程序可以操作在另一应用程序中实现的对象,或者向自动化客户端公开应用程序。
• ActiveX控件:支持ActiveX控件(默认值)。如果不选择此选项,以后需要向项目插入ActiveX控件时,必须在应用程序的InitInstance成员函数中添加AfxEnableControlContainer调用。
• MAPI(消息处理API):指定应用程序可以创建、操作、传输和存储邮件。
• Windows套接字:支持Windows套接字。Windows套接字允许编写通过TCP/IP网络通信的应用程序。
• Active Accessibility:在CWnd导出类中添加IAccessible支持,这允许自定义用户界面以便更好地与可访问性客户端交互。
• 公共控件清单:默认值。生成应用程序清单以启用随Microsoft Windows XP一起提供的新公共控件DLL。公共控件DLL版本6不自动更新现有应用程序使用的早期版本的公共控件。若要使用公共控件DLL版本6,则必须创建指示应用程序加载新DLL的应用程序清单。此公共控件DLL还支持Windows XP主题;应用程序清单还可指定应用程序需要的其他DLL和版本。Windows XP帮助确保仅使用指定的DLL加载应用程序。有关应用程序清单的更多信息,请参见“Platform SDK”中的独立应用程序和并行(Side-by-Side)程序集。
• 最近文件列表上的文件数:指定最近使用的列表中列出的文件数,默认值为4。
10 单击“下一步”按钮弹出“生成的类”对话框,此对话框中列出了项目生成的基类和文件的名称。默认情况下,名称基于在“新建项目”对话框中指定的项目名称,可以更改这些名称中的大部分名称,如图2-37所示。

图2-37 “生成的类”对话框
各个选项的具体说明如下。
• 生成的类:指示为项目创建的类的名称。默认情况下,名称基于项目名称。默认MFC项目创建CProjNameView类、CProjNameApp类、CProjNameDoc类、CProjNameMainFrame类 和CProjNameChildFrame类。此界面中的其他选项反映“生成的类”列表框中当前选定的类的信息。若要更改类名,可使用“类名”文本框。
• 类名:指示“生成的类”列表框中当前选定的类的名称。如果此文本框是活动的,则可以更改类名。当焦点从“类名”文本框中移出时,选定类名的任何更改都显示在“生成的类”列表框中。
• .h文件:指示“生成的类”列表框中当前选定的类的头文件名。如果此文本框是活动的,则可以更改头文件的名称。
• 基类:指示“生成的类”列表框中当前选定的类的基类名称。如果此文本框是活动的,则可以从下拉列表中为基类选择另一个类。
• .cpp文件:指示与选定的类关联的源代码文件名。如果此文本框是活动的,则可以更改实现文件的名称。
11 单击“完成”按钮后,完成整个项目的创建,如图2-38所示。

图2-38 创建的项目
12 在“类视图管理器”中用鼠标右键单击类CfirstView,在弹出的快捷菜单中选择“属性”命令,如图2-39所示。

图2-39 选择“属性”命令
13 在弹出的“属性”面板中单击“消息”按钮,如图2-40所示。

图2-40 单击“消息”按钮
14 然后找到WM_PAINT,在其中选择添加“OnPaint”选项,如图2-41所示。

图2-41 添加“OnPaint”项
15 此时自动来到代码编辑界面,然后编写如下代码:
void CfirstView::OnPaint() { CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 // 不为绘图消息调用CView::OnPaint() dc.DrawText(L"欢迎使用MFC!!!!!!!",CRect(50,50,500,100),DT_LEFT); }
单击Visual Studio 2005的“运行”按钮,程序执行后效果如图2-42所示。

图2-42 执行效果
如果选择图2-42中的“帮助”|“关于first”命令,会显示此项目的“关于”信息,如图2-43所示。

图2-43 关于信息
这样通过使用Visual Studio 2005向导,只需编写少量的代码即可实现一个应用项目。