让你的软件界面更漂亮(六)-- 仿QQ主界面之ListCtrl
2007-12-30 21:37:45 来源:WEB开发网QQ 的ListCtrl 包含了很多信息,如在线用户和不在线用户的头象不同,有视频设备的用户还会显示标志,开通了手机短消息功能的也会显示标志,等等。这是如何实现的?找MSDN分析CListCtrl 发现,有两个函数SetItemData(int nItem,DWORD dwData),和
DWORD GetItemData(int nItem),非常有用,这个32位 data 做几个标志还是不错的,但还是无法表达更多的东东。如果把这32位 data作为外部结构的地址是否可行呢?经实验是可行的,但在要外部处理,封装性能不好! 于是定义了一个用户信息的结构。
struct LUSERITEM
再定义一个链表,用来管理用户信息的结构,如查找,增加,删除等操作。 在头文件中添加
{
CString szUserID;
CString szUserName;
CString szIPAddress;
CString szServerAddress;
CString szNoticeMsg;
BOOL bOnline;
int nHeadImageIndex;
//根据需要可增加信息
};#include <dequ>
typedef std::deque<LUSERITEM> DEQUELVITEM;
二、打开Visual Studio C++ (6.0),新建工程。(本文的目的是实现自绘 ListCtrl 的,实现过程下面会详细介绍)
a. 首先,生成一个新类名为CMyListCtrl. 其基类为CListCtrl. 这部分工作用ClassWizard很容易完成。
b. 添加相关消息及处理函数,OnPaint() ;OnMouseMove();OnHScroll();OnVScroll等,这部工作用ClassWizard同样很容易完成。编译通过后,接着往下看。
c. 在.h文件顶部定义用户信息结构struct LUSERITEM
d. 在.h文件顶部定义一些常量标志
更多精彩
赞助商链接