第1节 手动创建控件
创建一个工程名为“vr”的对话框程序,用于演示手动创建控件并调用创建好的控件。修改对话框标题为“员工信息”,并删除界面上所有的控件。
1)在主对话框的头文件VrDlg.h中,加入多个控件类型的成员变量以及主要控件的ID枚举。

2)在主对话框类中添加一个成员函数,如图11-1所示。
3)键入返回值和函数名,如图11-2所示。

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

图11-2 填写函数名称和返回值
4)单击“OK”按钮,在函数中编写创建控件的代码。

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

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

图11-3 添加普通成员函数(https://www.daowen.com)
7)在CVrDlg类上单击鼠标右键,在弹出的快捷菜单中,选择“Add Member Functions”命令,添加三个成员函数OnAdd、OnDel和OnMod。


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


9)编译并运行,测试代码,如图11-4所示。
本示例演示了不使用类向导,而是调用控件类的成员函数来创建各种控件的过程,其中包括编辑框、列表控件以及下拉控件和按钮等。

图11-4 查看运行结果
对话框是Visual C++6.0中唯一可以进行可视化窗口编辑,并自动创建控件的窗口。在对话框启动时,基类成员函数CDialog::OnInitDialog会自动创建控件。按照对话框资源模板中预先编辑好的控件种类、位置和属性等自动创建。
控件并非只能在对话框窗口中才可以创建,无论是在主窗口还是子窗口中都可以创建控件,甚至在控件内还可以再创建控件。比如,在列表控件中,动态地加入编辑框或者下拉框等。在非对话框窗口中,就不能通过可视化编辑来自动创建控件了,只能调用控件类的Create函数手动创建。
手动创建控件难度大而且麻烦,不但创建控件的过程要手动编码实现,而且控件的消息映射过程也要手工编码实现。在非对话框窗口内不能可视化编辑,只能通过手动创建控件来实现。因此,这是一种包括框架、视图以及对话框等各种类型窗口通用的控件创建方法。