首页 理论教育快速建立MFC工程:VC++MFC视频教程

快速建立MFC工程:VC++MFC视频教程

【摘要】:在本章第5节中,通过“Win32 Application”建立的MFC32工程,目的是为了演示MFC工程的架构原理。一个MFC工程必须包含一个CWinApp的派生类,并定义一个派生类的全局变量theApp,最后重写InitInstance虚函数用于处理进程启动过程。本节直接通过“MFC AppWizard”来创建MFC工程,用于对照以上说明的MFC必备因素。图3-54 程序向导生成的代码图3-55 MFC类向导在Class name下拉列表中选择CTestMFCDlg类,在Member functions列表框中显示4个已添加的回调函数。

在本章第5节中,通过“Win32 Application”建立的MFC32工程,目的是为了演示MFC工程的架构原理。一个MFC工程必须包含一个CWinApp的派生类,并定义一个派生类的全局变量theApp,最后重写InitInstance虚函数用于处理进程启动过程。如果要接收和处理一个对话框内部的消息,则必须创建一个CDialog派生类,最后通过类向导对相关消息建立消息映射函数。

本节直接通过“MFC AppWizard(exe)”来创建MFC工程,用于对照以上说明的MFC必备因素。

1)执行File→New命令,或按快捷键<Ctrl+N>弹出新建对话框,如图3-50所示。

978-7-111-46378-8-Chapter03-67.jpg

图3-50 新建工程

在列表中选择“MFC AppWizard(exe)”,先选择一个目录,然后在“Project name”文本框中输入工程名“TestMFC”。

2)单击“OK”按钮后,选中“Dialog based”单选按钮,单击“Next”按钮,如图3-51所示。

978-7-111-46378-8-Chapter03-68.jpg

图3-51 选择应用程序类型

3)取消“About box”复选框的选中状态,单击“Next”按钮继续,如图3-52所示。

978-7-111-46378-8-Chapter03-69.jpg

图3-52 设置对话框

4)选中“As a statically linked library”,然后单击“Finish”按钮完成工程的创建,如图3-53所示。

978-7-111-46378-8-Chapter03-70.jpg

图3-53 选择静态链接MFC库

5)MFC程序向导(App Wizard),主要生成了以App和Dlg结尾的2个派生类,如图3-54所示。

6)在类视图中双击InitInstance函数,把一些无用的代码删除整理后,这个函数的代码就很清晰了。

978-7-111-46378-8-Chapter03-71.jpg

7)执行View→ClassWizard命令或者按快捷键<Ctrl+W>打开类向导,如图3-55所示。

978-7-111-46378-8-Chapter03-72.jpg

图3-54 程序向导生成的代码

978-7-111-46378-8-Chapter03-73.jpg

图3-55 MFC类向导(www.chuimin.cn)

在Class name下拉列表中选择CTestMFCDlg类,在Member functions列表框中显示4个已添加的回调函数。其中第一个图标“V”是代表虚函数类型的回调函数,另外3个函数的图标“W”是代表以“WM_”开头的消息回调函数。

8)在类向导中选中一个回调函数,单击“Delete Function”按钮即可删除一个回调函数。例如,删除OnQueryDragIcon函数时,主要包含以下3个部分被删除。

①头文件TestMFCDlg.h中的成员函数声明。

afx_msg HCURSOR OnQueryDragIcon();

②源文件TestMFCDlg.cpp中BEGIN_MESSAGE_MAP下面的消息关联代码。

ON_WM_QUERYDRAGICON(

③源文件TestMFCDlg.cpp中函数的定义。

978-7-111-46378-8-Chapter03-74.jpg

Visual C++6.0的类向导删除功能只是删除了前两个部分,第三个部分的函数体代码没有删除,还需要开发者手动删除这部分代码。目的是防止该部分代码行数很多时,一旦删除了难以恢复。

9)在类视图中的一个类成员函数上单击鼠标右键,在弹出的快捷菜单中选择“Delete”命令也可以删除函数,如图3-56所示。

这种方式删除成员函数的效果比使用类向导删除成员函数的效果要好,因为它把函数体的代码注释后保留在源代码文件中。当然也可以全部使用手动的方式删除以上三部分代码。

10)创建消息回调函数和虚函数回调函数,如图3-57所示。

978-7-111-46378-8-Chapter03-75.jpg

图3-56 在类视图中删除类成员函数

在类视图中一个窗口类的类名称上单击鼠标右键,在弹出的快捷菜单中选择“Add Virtual Function”命令,可在该窗口类内添加一个虚回调函数。如果选择“Add Windows Message Handler”命令,可在该窗口类内添加消息映射类型的回调函数。在类视图中通过菜单命令添加和删除回调函数,都比使用类向导更加方便快捷。在类向导(ClassWizard)的消息列表(Messages)中,列出的回调函数包括虚函数和消息回调函数两个部分。

11)在类视图中通过菜单命令,还可以创建MFC派生类或者普通类,如图3-58所示。

978-7-111-46378-8-Chapter03-76.jpg

图3-57 在类视图中通过菜单命令添加回调函数

978-7-111-46378-8-Chapter03-77.jpg

图3-58 在类视图中添加新类

12)在FileView中删除一个类。

如果要删除一个类,则必须手动将类声明和类定义文件(.h头文件和.cpp源文件)同时删除,并且在文件视图的编译列表中按<Delete>键将两个文件移除。最后在退出Visual C++6.0之前,执行File→Save workspace命令保存编译设置。