类似QQ游戏大厅导航的树型控件

注:这篇文章是早些日子我发布在VCKBASE上面的,现在拿过来.

下载地址 http://www.vckbase.com/code/winui/tree/Text_CTreeBT_Demo.rar

 

摘要


随着软件界面越来越花俏,windows标准常用控件难以满足实际项目的需求。在最近的项目中,需要实现一个类似QQ游戏大厅导航树型控件。参考了网络上的部分资料,自己动手制作了一个类CTreeCtrlBT。其界面如下:
图一
实现步骤
第一步:新建一个基于对话框的MFC工程,拖动一棵标准树型控件放于界面之上。添加一个新类CTreeCtrlBT派生自CTreeCtrl。

第二步:为该类添加一些消息响应以及虚函数。其详细作用如下:
void PreSubclassWindow(); //用于添加初始化控件的相关信息
WM_SIZE //控件区域发生变化时候的处理
WM_PAINT //绘制控件
WM_MOUSEMOVE //主要获取鼠标所在位置的单元项

第三步:TreeCtrlBT.h中首先声明一个结构用于保存单元项的相关信息,并把所有项的信息放入一个map。实现代码如下:

 

 

第四步:计算控件的客户区域大小,以及滚动条滚动的偏移量。详细过程参考源代码
Calculate函数。

第五步:添加接口函数以及成员变量。如下:
(注意:TransparentBlt函数,需要包含msimg32.dll)

  

 

第六步:绘制控件。需要的绘制函数如下:

  

结束语
初次发表文章,表达不够详细的地方,望多多谅解,详细过程请参考源代码。在制作本控件时候,参考了类VividTree的部分代码,其地址如下:
http://www.codeproject.com/KB/tree/VividTree.aspx
  
如果你有对本代码有声明建议或者意见可以联系本人,非常期待交往你这个朋友。
QQ:182408087
MSN:xiaofangmsg@hotmail.com

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值