首页 理论教育使用类向导建立控件相关变量

使用类向导建立控件相关变量

【摘要】:通过MFC应用程序向导,创建一个工程名为“vc”的对话框程序用于演示控件型关联变量。图6-4 通过菜单命令打开类向导4)在Member Variables分页中,选中IDC_LIST列表项再单击“Add Variables”按钮,或者直接双击IDC_LIST弹出添加关联变量的对话框,如图6-5所示。图6-6 类向导创建关联变量生成的代码DoDataExchange函数就是专门处理成员变量与控件关联的函数,可以认为是成员变量与控件之间的桥梁。6)按照以上方法,通过类向导为组合控件IDC_DEPT也建立一个控件型关联变量,如图6-7所示。

通过类向导(ClassWizard)可以建立一个控件类型的成员变量,并且这个成员变量与一个指定ID的控件关联。通过这个成员变量调用控件类的成员函数可以操作与之关联的控件,这个成员变量就是控件型关联变量。

通过MFC应用程序向导,创建一个工程名为“vc”的对话框程序用于演示控件型关联变量。

1)修改主对话框的外观和字体并添加一些控件,如图6-3所示。

978-7-111-46378-8-Chapter06-9.jpg

图6-3 编辑主对话框资源

2)添加一些控件并修改控件的属性,见表6-2。

表6-2 主对话框的控件属性

978-7-111-46378-8-Chapter06-10.jpg

3)在对话框上单击鼠标右键,在弹出的快捷菜单中,选择“ClassWizard”命令,或按快捷键<Ctrl+W>打开类向导,如图6-4所示。

978-7-111-46378-8-Chapter06-11.jpg

图6-4 通过菜单命令打开类向导

4)在Member Variables分页中,选中IDC_LIST列表项再单击“Add Variables”按钮,或者直接双击IDC_LIST弹出添加关联变量的对话框,如图6-5所示。

978-7-111-46378-8-Chapter06-12.jpg

图6-5 添加控件型关联变量

其中,在Category下拉列表框中选择“Control”,表示要添加的是控件型关联变量。在Variable type下拉列表框中选择“CListCtrl”,表示要建立的关联变量的类型。在Member variable name文本框中填写变量名称“m_list”后单击“OK”按钮,完成添加控件型关联变量。

5)添加关联变量的结果。

在对话框类的头文件vcDlg.h中增加了一行代码“CListCtrl m_list”,就是刚才添加的CListCtrl类型成员变量;在源文件vcDlg.cpp中也增加了一行代码“DDX_Control(pDX,IDC_LIST,m_list);”,表示将ID为IDC_LIST的列表控件与成员变量m_list关联,如图6-6所示。

978-7-111-46378-8-Chapter06-13.jpg

图6-6 类向导创建关联变量生成的代码

DoDataExchange函数就是专门处理成员变量与控件关联的函数,可以认为是成员变量与控件之间的桥梁。头文件和源文件中的特殊注释代码“//{{AFX_DATA”和“//}}AFX_DATA”,是类向导用于自身管理的代码。类似于AFX_VIRTUAL和AFX_MSG,是类向导用于管理回调函数的注释代码,AFX_DATA是类向导管理关联变量的注释代码。(www.chuimin.cn)

6)按照以上方法,通过类向导为组合控件IDC_DEPT也建立一个控件型关联变量,如图6-7所示(在Category下拉列表框中选择“Control”,表示建立控件型关联变量)。

978-7-111-46378-8-Chapter06-14.jpg

图6-7 添加控件型关联变量

7)创建了多个关联变量,若有建立的变量不对则可单击“Delete Variable”按钮删除,如图6-8所示。

978-7-111-46378-8-Chapter06-15.jpg

图6-8 关联变量列表管理

8)在头文件和源文件中处理关联变量的代码,如图6-9所示。

978-7-111-46378-8-Chapter06-16.jpg

图6-9 类向导创建关联变量生成的代码

9)修改对话框初始化函数的代码。

978-7-111-46378-8-Chapter06-17.jpg

10)为增、删、改3个按钮建立消息映射函数并修改代码。

978-7-111-46378-8-Chapter06-18.jpg

978-7-111-46378-8-Chapter06-19.jpg

11)编译并运行,测试代码,如图6-10所示。

978-7-111-46378-8-Chapter06-20.jpg

图6-10 查看运行结果

本示例演示了通过类向导,对多种控件建立控件型关联变量。控件型关联变量比GetDlgItem函数在使用上方便得多,关联变量建立完之后就可以长期使用,每次调用前不需要再重新关联。