随笔-341  评论-2670  文章-0  trackbacks-0

    今天给ListControl重构了一下,现在数据源、样式、排版和坐标轴变成了正交的四个模块。举个例子,只需要写一个针对同等行高从上到下的排版算法,那么通过坐标轴变换功能,就可以同时获得四种方向的排版了。这种功能是相当常见的。对于ListView那种块状排版来说,坐标轴变换可以获得八种方向的排版。最新的代码发布在了Vczh Library++3.0(Candidate\GUI\GuiDemo\GuiDemo.sln)贴图如下:









    GacUI的列表控件通过替换数据源、样式、排版和坐标轴变换等方式,可以被配置成普通列表、ListView、TreeView、甚至是更复杂一点的带折叠的ListView等等。而且它们都是基于Virtual List的,因此可以无压力显示超大数据源的内容。当然,这需要排版功能的配合,所以我最近一直在给列表控件编写预定义的很多数据源、样式、排版和坐标轴变换。这样就可以立刻拥有基本的控件了。如果要扩展的话,只需要把各种组合替换一下,或者自己编写一个样式,就可以得到很多好用的列表控件了(譬如说添加一个checkbox到ListViewItem上面)。

    Win7资源管理器那个ListView的ColumnHeader的样式已经开发完毕了,最后只要通过编写一个样式,就可以补上ListView剩下的最后那一个Detail模式了。

posted on 2011-12-15 07:08 陈梓瀚(vczh) 阅读(2325) 评论(7)  编辑 收藏 引用 所属分类: GacUI

评论:
# re: ListControl添加坐标轴变换功能 2011-12-15 19:20 | 春秋十一月
我也是致力原创技术研究的人,支持陈兄原创,你的GUI控件支不支外壳扩展呀  回复  更多评论
  
# re: ListControl添加坐标轴变换功能 2011-12-15 19:32 | 空明流转
牛逼了。。。。  回复  更多评论
  
# re: ListControl添加坐标轴变换功能 2011-12-15 19:34 | 陈梓瀚(vczh)
@春秋十一月
如果你是说Shell的话,那只要稍微修改一下INativeWindow的缺省实现(或者你干脆自己做一个替换他,架构上是允许的),去掉多窗口的功能就可以了。现在最外层的窗口仍然是一个HWND,跟Shell的要求是一致的。  回复  更多评论
  
# re: ListControl添加坐标轴变换功能 2011-12-15 21:20 | phoenixbing
好东西啊.  回复  更多评论
  
# re: ListControl添加坐标轴变换功能 2011-12-15 22:52 | Pear
垂涎更完整的UI  回复  更多评论
  
# re: ListControl添加坐标轴变换功能 2011-12-16 03:13 | ooseven
支持virtual list模式,但是,没有内置的数据管理模式吗?
  回复  更多评论
  
# re: ListControl添加坐标轴变换功能 2011-12-16 07:29 | 陈梓瀚(vczh)
@ooseven
我写了几个缺省的,适合一般情况,但是特殊情况性能不够好(所以特殊情况你要自己写数据源)的“数据管理模式”。  回复  更多评论
  

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理