Welcome

首页 / 软件开发 / C++ / 类似QQ游戏大厅导航的树型控件

类似QQ游戏大厅导航的树型控件2010-09-29 vckbase 方建君在最近的项目中,需要实现一个类似QQ游戏大厅导航树型控件。参考了网络上的部分资料,自己动手制作了一个类CTreeCtrlBT。其界面如下:

实现步骤

第一步:新建一个基于对话框的MFC工程,拖动一棵标准树型控件放于界面之上。添加一个新类CTreeCtrlBT派生自CTreeCtrl。

第二步:为该类添加一些消息响应以及虚函数。其详细作用如下:

void PreSubclassWindow(); //用于添加初始化控件的相关信息

WM_SIZE //控件区域发生变化时候的处理

WM_PAINT //绘制控件

WM_MOUSEMOVE //主要获取鼠标所在位置的单元项

第三步:TreeCtrlBT.h中首先声明一个结构用于保存单元项的相关信息,并把所有项的信息放入一个map。实现代码如下:typedef struct tagItemMsg
{
HTREEITEM hItem; //项的句柄
CBitmap ItemBitmap; //项的位图
COLORREF crTransparent; //透明颜色
tagItemMsg()
{
hItem = NULL;

crTransparent = RGB(255,255,255);
}

~tagItemMsg()
{
if ( ItemBitmap.GetSafeHandle() )
{
ItemBitmap.DeleteObject();
}
}
}ITEM_MSG;
typedef map<HTREEITEM,ITEM_MSG*> ITEMMSG_MAP;