博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何自绘树形控件(QQ好友列表)
阅读量:5145 次
发布时间:2019-06-13

本文共 1938 字,大约阅读时间需要 6 分钟。

如何自绘树形控件(QQ好友列表)

     

由于Windows控件本身有许多局限性,有些界面要求如果使用标准的Windows控件没有办法实现,或者效率太低。本文主要介绍的是自定义的树形控件,这种控件多用来实现用户列表等功能,如QQ,MSN用户列表效果。

   传统的Tree control有如下局限:

Item高度相同,不能实现不等高的界面效果item绘制复杂,效率不高难以实现背景透明等效果

其中第一条不能设置Item的不同高度是TreeCtrl最大的局限。因为大多数树形列表,希望能用不同的高度来区分不同Item意义,更好的展示Item内容。如下图所示:

DSkinLite新特性:支持扩展自绘:dsTreeControl控件和dsTabControl自绘控件

dsTreeControl控件是一款类似Tree control的树形控件,主要支持一些标准树形控件

不能完成的功能,如设置不同item的不同高度。

dsTabControl控件是一款类似Tab control的树形控件,主要是为了解决标准Tab控件的限制,满足更多需求。

自绘树形控件,在DSkinLite界面库中以导出类dsTreeControl的形式提供,我们采用类似MFC/WTL 库CTreeCtrl的方式封装,用户将更加容易和使用dsTreeControl类。部分成员函数如下:

class DSKINDLL_API dsTreeControl{ public: dsTreeControl( void); virtual ~dsTreeControl( void); static dsTreeControl* CreateTreeWidget( HWND hwnd, LPCTSTR strStyle); enum { Item_Nor, Item_Over, Item_Checked } itemState; HTREEITEM GetChildItem( HTREEITEM hItem); int GetItemHeight( HTREEITEM hItem, UINT nState ); void SetItemHeight( HTREEITEM hItem , int nHeight, UINT nState); DWORD GetItemData( HTREEITEM hItem); void SetItemData( HTREEITEM hItem , DWORD dwData); HTREEITEM HitTest(CPoint pt ) const; BOOL GetItemRect( HTREEITEM hItem , LPRECT lpRect); int GetItemState( HTREEITEM hItem ); BOOL ItemHasChildren(HTREEITEM hItem) const; LPCTSTR GetItemText( HTREEITEM item ); HTREEITEM GetNextSiblingItem( HTREEITEM hItem); HTREEITEM GetParentItem( HTREEITEM hItem ); HTREEITEM GetPrevSiblingItem ( HTREEITEM hItem ); HTREEITEM GetRootItem(); HTREEITEM GetSelectedItem(); BOOL DeleteAllItems(); BOOL DeleteItem( HTREEITEM hItem ); BOOL Expand(HTREEITEM hItem, UINT nCode); HTREEITEM InsertItem(LPCTSTR lpszItem, HTREEITEM hParent); private: HWND m_hWnd;};

如您对此扩展控件树形有任何想法和建议,也欢迎您在我们博客留言,或者与我们Email联系。

DSkinLite除支持一般控件之外,还完整支持各种控件的内置滚动条。同时还采用可以配置listctrl,listbox,treectrl等控件的item内容的绘制,无需额外编写绘制代码。具体请参见:

    

   

      同时针对Win32控件本身的一个局限,DSkinLite中加入了一些自绘的控件,来解决使用标准Win32控件无法解决的界面需求。详细了解,WidgetTree自绘控件,WidgetTab自绘控件。

     

     

转载于:https://www.cnblogs.com/uieasy/archive/2011/03/17/1987270.html

你可能感兴趣的文章
Double保留两位小数
查看>>
UVA1368
查看>>
Peter Norvig:Teach Yourself Programming in Ten Years(自学编程,十年磨一剑)
查看>>
Java 6 JVM参数选项大全(中文版)
查看>>
帝国cms用户密码忘记怎么修改
查看>>
centos7删除PHP怎么操作
查看>>
如何移除woocommerce的tabs【wordpress技巧】
查看>>
微信公众平台已发送多图文消息支持删除单篇文章
查看>>
dedecms利用addfields body在首页调用文章内容
查看>>
Codeforces Round #353 (Div. 2)
查看>>
Educational Codeforces Round 27
查看>>
bzoj3876: [Ahoi2014&Jsoi2014]支线剧情
查看>>
ie6 IE7 IE8 多浏览器css兼容写法
查看>>
webpack实现scss编译配置
查看>>
C++ 补课 (三)
查看>>
Mac 下重新安装配置ibm Lotus 邮箱
查看>>
ansible 开源批量管理服务器工具
查看>>
JavaScript变量详解
查看>>
mongodb的查询操作符
查看>>
匈牙利算法实战codevs1022覆盖
查看>>