让你的软件界面更漂亮(六)-- 仿QQ主界面之ListCtrl
http://tech.ddvip.com 2007年12月30日 社区交流
本文详细介绍让你的软件界面更漂亮(六)-- 仿QQ主界面之ListCtrl
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文件顶部定义一些常量标志
来源:vckbase 作者:朱一松 责编:豆豆技术应用
- VC/VC++按钮设计专题
- VC/VC++ 菜单专题
- VC/VC++ 工具条专题
- VC/VC++ 对话框教程
- VC/VC++ 报表教程
- VC/VC++ 控件
- VC/VC++ GDI
- Visual Studio 2008
- VC/VC++ MFC教程
- VC/VC++ QQ
- VC/VC++ Socket编程
- VC/VC++ 钩子编程
- TangramMini组件应用教程
- VC/VC++ 窗体
- VC/VC++ ADO 教程
- Windows CE 教程
- VC/VC++ DLL(动态链接库)编程
- VC/VC++ PDFlib
- VC与MATLAB编程
- VC/VC++ DirectShow 教程
- VC++入门视频教程
- VC/VC++ COM组件设计与应用
- VC/VC++ ATL
- VC/VC++ WTL
- VC/VC++ 定制调试诊断工具和程序
- VC/VC++ 进程
- VC/VC++ Win32
- VC/VC++ WMI
- VC/VC++ 消息
- 更多VC/VC++专题……