WEB开发网
开发学院软件开发VC 让你的软件界面更漂亮(六)-- 仿QQ主界面之ListC... 阅读

让你的软件界面更漂亮(六)-- 仿QQ主界面之ListCtrl

 2007-12-30 21:37:45 来源:WEB开发网   
核心提示: QQ 的ListCtrl 包含了很多信息,如在线用户和不在线用户的头象不同,让你的软件界面更漂亮(六)-- 仿QQ主界面之ListCtrl(3),有视频设备的用户还会显示标志,开通了手机短消息功能的也会显示标志,OnPaint() ;OnMouseMove();OnHScroll();On

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文件顶部定义一些常量标志

上一页  1 2 3 4  下一页

Tags:软件 界面 漂亮

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接