11.1.1 服务器端(2)
3.为对话框资源关联新类
用户在实例工程中,使用新建对话框前,必须为其关联一个新类。否则,用户将不能使用该对话框。首先,在VC环境下,使用快捷键Ctrl+W弹出MFC向导对话框的同时将弹出Adding a Class对话框,如图11.7所示。用户选择第一个选项,表示创建一个新类。然后单击OK按钮,将弹出New Class对话框,如图11.8所示。
|
| 图11.7 Adding a Class对话框 |
|
| (点击查看大图)图11.8 New Class对话框 |
在该对话框中,用户可以修改新类名及其基类名等。在本章中,将新类名指定为CMessage,将其基类名指定为CDialog。然后,单击OK按钮完成新类的添加。
4.服务器界面初始化
在服务器端,界面初始化包括了主对话框以及消息显示对话框界面的初始化。下面将分别向用户讲解程序界面的初始化。
首先,当服务器程序启动时,程序应该将列表控件的各个标题显示出来。所以,用户在实例窗口的初始化函数OnInitDialog()中,应该使用列表控件类的相关函数对标题进行设置。代码如下:
- BOOL CQQDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
- ... //省略部分代码
- LVCOLUMN lv; //定义列表结构体变量
- lv.mask=LVCF_TEXT|LVCF_FMT|LVCF_WIDTH; //初始化结构体各个成员
- lv.fmt=LVCFMT_CENTER;
- lv.pszText="用户号码"; //设置列表标题
- lv.cx=120; //指定该列宽度
- m_list.InsertColumn(0,&lv); //插入指定列
- lv.pszText="IP地址"; //修改列标题
- m_list.InsertColumn(1,&lv); //插入指定列
- lv.pszText="用户类型"; //修改列标题
- m_list.InsertColumn(2,&lv); //插入指定列
- }
用户已经完成了对主对话框界面的初始化工作了,保存并编译运行程序,如图11.9所示。然后,消息对话框的初始化工作主要为界面中的控件状态及其显示内容的初始化。其中,控件状态的显示效果如图11.10所示。
|
| 图11.9 主对话框界面初始化 |
|
| 图11.10 消息对话框界面初始化 |
用户在程序中,实现消息对话框初始化的代码如下:
- BOOL CMessage::OnInitDialog()
//消息对话框初始化函数 - {
- CDialog::OnInitDialog();
- GetDlgItem(IDC_NUM)->EnableWindow(false);
//禁用客户端号码编辑框 - GetDlgItem(IDC_IP)->EnableWindow(false);
//禁用IP地址编辑框 - GetDlgItem(IDC_TEXT)->EnableWindow(false);
//禁用消息显示框 - GetDlgItem(IDC_TEXT2)->ShowWindow(false);
//隐藏消息发送框 - GetDlgItem(IDC_SEND)->ShowWindow(false);
//隐藏发送按钮 - ...
//省略部分代码 - return TRUE;
- }
接下来,用户需要在消息对话框类CMessage中为各个子控件添加相应的变量,以实现当程序初始化时,便于设置各个控件的显示内容。在VC中添加成员变量的方法是使用快捷键Ctrl+W,打开应用程序向导对话框的选项卡Member Variables,如图11.11所示。
|
| (点击查看大图)图11.11 添加成员变量属性页 |
用户在该属性页中,可以为消息对话框中的子控件关联相应的控件变量。例如,为控件IDC_IP添加相应控件变量的方法是,在Control IDs列表中选择IDC_IP,然后单击Add Variable按钮。此时,程序将弹出Add Member Variable对话框,如图11.12所示。
|
| 图11.12 Add Member Variable对话框 |
在该对话框中,用户在第一个编辑框中输入控件变量的名称,当选择好变量类型后,单击OK按钮添加控件变量成功。
注意:由于在消息对话框程序中,添加控件变量的方法都是一样的。所以,为其他控件关联变量的方法也是一样,在本节中不再向用户进行赘述。
通过本节,用户基本完成了服务器界面的初始化工作。关于其他功能的实现,将在后面的内容中向用户进行讲述。