11.1.2 客户端(1)
在客户端实例中,实例程序的界面应该与QQ的界面相似。因此,在VC中新建一个工程,修改工程名为"仿QQ程序客户端"。而其他设置均与服务器端一样。
1.客户端界面设计
用户可以在对话框资源编辑器中,将窗口拖放到与QQ窗口同样大小,如图11.13所示。但是,用户在实际使用该实例时,常常需要使用鼠标将窗口拉大或者是拉小。为了使程序运行时具有该功能,用户可以右击对话框面板,在弹出的快捷菜单中选择"属性"命令,弹出"对话 属性"对话框,如图11.14所示。
用户在该对话框中,选择"样式"选项卡,在边框下拉列表框中选择"调整大小"选项。当客户端实例运行时,用户便可以使用鼠标对窗口进行缩放了。请用户参考随书光盘中的实例代码。
现在,用户可以在VC的资源管理器中,为客户端主窗口添加相应的功能控件。添加控件后的界面效果如图11.15所示。
其中,添加的控件ID、类型以及作用等如表11.2所示。
表11.2 控件ID、类型以及作用
|
控 件 ID< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
控件类型 |
控件作用 |
|
IDC_LIST1 |
列表控件 |
显示好友 |
|
IDC_EMAIL |
按钮 |
QQ邮件 |
|
IDC_NET |
按钮 |
QQ网页 |
用户添加控件成功以后,为了使添加的控件能随窗口的大小改变而改变。该功能应该在窗口类的函数OnSize()中实现,代码如下:
- void CQQDlg::OnSize(UINT nType, int cx, int cy)
- {
- CDialog::OnSize(nType, cx, cy);
- RECT rect;
//定义结构体变量 - ::GetWindowRect(m_hWnd,&rect);
//获取窗口的大小 - GetDlgItem(IDC_LIST1)->MoveWindow(&rect,true);
//根据窗口的大小移动控件 - GetDlgItem(IDC_EMAIL)->MoveWindow(&rect,true);
- GetDlgItem(IDC_NET)->MoveWindow(&rect,true);
- }
当窗口的大小发生变化时,程序会调用该函数进行处理。通过以上代码,用户实现了控件随窗口的大小改变而改变。
2.显示QQ图标
为了使实例程序与真实QQ的效果一样,用户可以在程序中添加一个QQ图标。其方法如下:
(1)在实例工程中,添加一个图标资源。选择"插入"|"资源"命令,弹出"插入资源"对话框,如图11.16所示。
|
| 图11.16 插入资源对话框 |
用户选中资源类型列表中的选项Icon,再单击"引入"按钮,选择并插入图标文件即可。在VC资源管理器的图标项中,用户可以查看刚添加的图标文件,如图11.17 所示。
|
| (点击查看大图)图11.17 刚插入的图标资源 |
(2)用户可以将该图标文件的名称修改为IDR_MAINFRAME,并且在对话框类CQQDlg的初始化函数中调用函数载入该图标资源到程序中。代码如下:
- CQQDlg::CQQDlg(CWnd* pParent /*=NULL*/)
- : CDialog(CQQDlg::IDD, pParent) //对
话框类的初始化函数 - {
- m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);//载入图标资源
- }