首页 理论教育手动创建控件,添加消息映射函数

手动创建控件,添加消息映射函数

【摘要】:创建一个工程名为“vr”的对话框程序,用于演示手动创建控件并调用创建好的控件。图11-1 添加普通成员函数图11-2 填写函数名称和返回值4)单击“OK”按钮,在函数中编写创建控件的代码。6)手动创建3个按钮的消息映射函数,如图11-3所示。在对话框启动时,基类成员函数CDialog::OnInitDialog会自动创建控件。手动创建控件难度大而且麻烦,不但创建控件的过程要手动编码实现,而且控件的消息映射过程也要手工编码实现。

创建一个工程名为“vr”的对话框程序,用于演示手动创建控件并调用创建好的控件。修改对话框标题为“员工信息”,并删除界面上所有的控件。

1)在主对话框的头文件VrDlg.h中,加入多个控件类型的成员变量以及主要控件的ID枚举。

978-7-111-46378-8-Chapter11-1.jpg

2)在主对话框类中添加一个成员函数,如图11-1所示。

3)键入返回值和函数名,如图11-2所示。

978-7-111-46378-8-Chapter11-2.jpg

图11-1 添加普通成员函数

978-7-111-46378-8-Chapter11-3.jpg

图11-2 填写函数名称和返回值

4)单击“OK”按钮,在函数中编写创建控件的代码。

978-7-111-46378-8-Chapter11-4.jpg

5)修改对话框初始化函数代码,调用CreateCtrls并初始化控件。

978-7-111-46378-8-Chapter11-5.jpg

6)手动创建3个按钮的消息映射函数,如图11-3所示(因为是手动创建的控件,所以不能使用类向导创建消息映射函数,只能手动创建消息映射函数)。

978-7-111-46378-8-Chapter11-6.jpg

图11-3 添加普通成员函数(www.chuimin.cn)

7)在CVrDlg类上单击鼠标右键,在弹出的快捷菜单中,选择“Add Member Functions”命令,添加三个成员函数OnAdd、OnDel和OnMod。

978-7-111-46378-8-Chapter11-7.jpg

978-7-111-46378-8-Chapter11-8.jpg

8)手动添加消息映射代码。

在BEGIN_MESSAGE_MAP内添加3行代码,用于把关联3个按钮的消息映射函数(注意不要添加到AFX_MSG_MAP区域内,因为AFX_MSG_MAP区域内是类向导管理的代码)。

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

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

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

本示例演示了不使用类向导,而是调用控件类的成员函数来创建各种控件的过程,其中包括编辑框、列表控件以及下拉控件和按钮等。

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

图11-4 查看运行结果

对话框是Visual C++6.0中唯一可以进行可视化窗口编辑,并自动创建控件的窗口。在对话框启动时,基类成员函数CDialog::OnInitDialog会自动创建控件。按照对话框资源模板中预先编辑好的控件种类、位置和属性等自动创建。

控件并非只能在对话框窗口中才可以创建,无论是在主窗口还是子窗口中都可以创建控件,甚至在控件内还可以再创建控件。比如,在列表控件中,动态地加入编辑框或者下拉框等。在非对话框窗口中,就不能通过可视化编辑来自动创建控件了,只能调用控件类的Create函数手动创建。

手动创建控件难度大而且麻烦,不但创建控件的过程要手动编码实现,而且控件的消息映射过程也要手工编码实现。在非对话框窗口内不能可视化编辑,只能通过手动创建控件来实现。因此,这是一种包括框架、视图以及对话框等各种类型窗口通用的控件创建方法。