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

时间:2012-04-27 11:38:34
【文件属性】:

文件名称:VC类似QQ游戏大厅导航的树型控件

文件大小:74KB

文件格式:RAR

更新时间:2012-04-27 11:38:34

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

第一步:新建一个基于对话框的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 ITEMMSG_MAP; 第四步:计算控件的客户区域大小,以及滚动条滚动的偏移量。详细过程参考源代码 Calculate函数。 第五步:添加接口函数以及成员变量。如下: (注意:TransparentBlt函数,需要包含msimg32.dll) //设置背景位图BOOL SetBackgroudBitmap( UINT nID );BOOL SetBackgroudBitmap(LPCTSTR lpszRecourceName);//设置某一项位图void SetItemBitmap(HTREEITEM hItem, UINT nIdBitmap);void SetItemBitmap(HTREEITEM hItem, LPCTSTR lpszBitmap);//设置展开收缩的图表void SetExpandBitmap(UINT nIdExpand, UINT nIdCollapse, COLORREF crTransparent = RGB(255,255,255));//插入新的项目HTREEITEM InsertItemEx(HTREEITEM hParent, LPCTSTR lpszItem, UINT nIdBitmap = 0, OLORREF crTransparent = RGB(255,255,255));HTREEITEM InsertItemEx(HTREEITEM hParent, LPCTSTR lpszItem, LPCTSTR lpszBitmap, COLORREF crTransparent = RGB(255,255,255));//开启横线void EnableRowLine( BOOL bEnable = TRUE );//是否开启横线BOOL IsEnableRowLine();//开启根节点背景void EnableRootBk( BOOL bEnable = TRUE );//是否开启根节点背景BOOL IsEnableRootBk();//获取某一项信息ITEM_MSG* GetItemMsg(HTREEITEM hItem); 第六步:绘制控件。需要的绘制函数如下: //绘制渐变色矩形区域void GradientFillRect( CDC *pDC, CRect &rect, COLORREF col_from, COLORREF col_to, bool vert_grad ); //绘制控件背景void DrawBackgroudBitmap(CDC* pDc); //绘制单元项void DrawItem( CDC* pDC ); //绘制单元项下部横线void DrawRowLine(CPoint ptBegin, CPoint ptEnd, CDC *pDc = NULL); //绘制展开收缩按钮void DrawExpand(CRect rect, int state, CDC *pDc = NULL); //绘制单元项位图void DrawItemBitmap(CRect rect, HTREEITEM hItem, CDC *pDc = NULL); //绘制单元项目文本void DrawItemText(CRect rect, HTREEITEM hItem, bool bselected,CDC *pDc = NULL);


【文件预览】:
Text_CTreeBT_Demo
----StdAfx.cpp(219B)
----Text_CTreeBT_Demo.rc(6KB)
----Text_CTreeBT_Demo.cpp(2KB)
----resource.h(1KB)
----Text_CTreeBT_Demo.h(1KB)
----Text_CTreeBT_Demo.clw(2KB)
----Text_CTreeBT_Demo.ncb(89KB)
----Text_CTreeBT_Demo.aps(71KB)
----Text_CTreeBT_Demo.dsp(5KB)
----Text_CTreeBT_DemoDlg.h(2KB)
----ReadMe.txt(4KB)
----TreeCtrlBT.cpp(16KB)
----StdAfx.h(1KB)
----Text_CTreeBT_Demo.dsw(559B)
----TreeCtrlBT.h(4KB)
----Release()
--------Text_CTreeBT_Demo.exe(72KB)
----说明.txt(3KB)
----res()
--------3.bmp(1KB)
--------2.bmp(1KB)
--------Text_CTreeBT_Demo.ico(1KB)
--------Sun.bmp(450B)
--------6.bmp(1KB)
--------4.bmp(1KB)
--------Text_CTreeBT_Demo.rc2(409B)
--------Thumbs.db(14KB)
--------Add.bmp(450B)
--------5.bmp(1KB)
--------1.bmp(1KB)
--------code_project.bmp(27KB)
----Text_CTreeBT_DemoDlg.cpp(9KB)

网友评论

  • 非常好,已经在使用了
  • 可以运行,有帮助
  • 控件不错,有点复杂,希望一个简单点的,单独的一个树形控件代码(改背景,字体颜色,去图标。。。)
  • 结构树的编程很好的实例,很有参考价值
  • 还可以,运行没问题
  • 很强大啊!!我在用了。
  • 不错,对我帮助很大!
  • 不错,不过仅供参考。
  • 运行没问题 不错 很像
  • 和我要求的不一样
  • 不错 但是和我要求的不一样
  • 运行没问题 不错 很像
  • 作为编类似结构树的程序可以作为很好的参考!