11.1.2 客户端(2)
(3)在对话框的初始化函数OnInitDialog()中,调用函数SendMessage()向主窗口发送消息WM_SETICON设置该对话框的图标。代码如下:
- BOOL CQQDlg::OnInitDialog() //对话框初始化函数
- {
- CDialog::OnInitDialog();
- SetIcon(m_hIcon, TRUE);
- SetIcon(m_hIcon, FALSE);
- ::SendMessage(this->m_hWnd,WM_SETICON,0,(unsigned int)m_hIcon);
- //向对话框发送设置图标的消息
- return TRUE;
- }
(4)用户保存,并且编译运行程序,结果如图11.18所示。
到这里为止,用户已经成功地为应用程序添加了QQ图标。
3.列表控件初始化
当实例程序启动时,列表控件的初始化工作主要是显示列表控件的标题以及好友列表。所以,用户需要在实例工程中插入位图资源,并将其命名为IDB_BITMAP1,如图11.19所示。
|
| 图11.18 设置实例程序的图标 |
|
| (点击查看大图)图11.19 插入的位图资源 |
- BOOL CQQDlg::OnInitDialog()
- {
- CDialog::OnInitDialog();
- ... //省略部分代码
- CImageList *img;//定义图像列表指针
- img=new CImageList(); //创建图像列表对象
- img->Create(32,32,ILC_COLOR4,3,2);
- img->Add(&m_bit,RGB(255,0,255)); //向图
像列表中添加图像- LVCOLUMN lv; //定义列表结构体变量
- lv.mask=LVCF_TEXT|LVCF_FMT|LVCF_WIDTH|LVIF_IMAGE;
- //初始化该结构体中的成员
- lv.fmt=LVCFMT_CENTER;
- lv.pszText=" 好友列表"; //设置列表标题
- lv.cx=140; //指定该列宽度
- m_list.InsertColumn(0,&lv); //插入列表标题
- m_list.SetImageList(img,LVSIL_SMALL); //设置图像列表
- CString str[7];
- for(int i=0;i<7;i++)
- {
- recv(s,str[i].GetBuffer(1),sizeof(str[i]),NULL);//接
收服务器发送的好友列表- m_list.InsertItem(i,str[i],i); //向列
表控件中添加项目- }
- return TRUE;
- }
在代码中,函数SetImageList()的作用是将图像列表以指定方式显示到列表控件中。其原型如下:
- CImageList* SetImageList( CImageList* pImageList, int nImageList );
该函数有两个参数。其中,参数pImageList指向CImageList类的指针;参数nImageList表示显示的方式,其值如表11.3所示。
表11.3 图像列表在列表控件中的显示方式
|
取 值< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
意 义 |
|
LVSIL_NORMAL |
以大图显示 |
|
LVSIL_SMALL |
以小图显示 |
|
LVSIL_STATE |
以固定大小进行显示 |
用户将上面的代码编译、运行后,结果如图11.20所示。
|
| 图11.20 在列表中显示位图资源 |
4.设置对话框背景
用户可以从资源文件中,插入一幅位图作为程序界面的背景,将资源ID修改为IDB_BITMAP2。首先,在对话框类中声明设备句柄dc1。代码如下:
- class CQQDlg : public CDialog
- {
- public:
- ...//省略部分代码
- HDC dc1; //声明设备句柄
- }
然后,在函数OnPaint()中,创建一个与对话框设备环境相兼容的DC句柄并返回。利用这个返回的兼容设备DC,用户便可以将载入的位图资源放入该兼容DC中。最后,调用函数StretchBlt()将兼容DC中的位图资源复制到对话框的实际DC中显示。代码如下:
- void CQQDlg::OnPaint()
- {
- ... //省略部分代码
- m_bit1.LoadBitmap(IDB_BITMAP2); //载入位图资源
- dc1=::CreateCompatibleDC(::GetDC(this->m_hWnd)); //创建兼容DC
- ::SelectObject(dc1,m_bit1.m_hObject);
//选取位图到兼容DC中- ::StretchBlt(::GetDC(this->m_hWnd),0,0,500,650,
dc1,0,0,300,300,SRCCOPY);- //复制位图资源
- }


