Demo 第三版源码VC2005工程(附全部.h,ansi/unicode lib,dll),下载地址:http://goo.gl/c0L7Q

 
开源项目地址:http://code.google.com/p/duilib/

该项目基于一个老外viksoe的DirectUI原理分析论文及示例:http://www.viksoe.dk/code/windowless1.htm
 
SVN checkout了项目的源码进行了试用,由于例子中程序里的List控件的使用,大多是仿Windows标准的ListCtrl,即列表头+纯文本(图标)列表项的应用方式,而DirectUI的应用场景最多的案例就是,类似迅雷等下载软件的复杂结构的List——即列表项中有复杂的文本、进度条、按钮、下拉框等控件(而这也是现代软件包括手机软件例如iPhone,Android最多使用的一种控件布局方式),大概看了下DUILIB的控件源代码,在该界面库中,这种复杂List的实现方法应为
(XML配置方式): 
  1. <List name="" text="" tooltip="" float="false" bordersize="1" bkcolor="#FFE0F0FE" bordercolor="#FF1B4876" itemselectedbkcolor="#FFC1E3FF" itemhotbkcolor="#FFE9F5FF" header="hidden" inset="3,3,3,3" bkimage="file='downlist_bk.png' ytiled='true'">
  2. <ListContainerElement height="45">
  3. <HorizontalLayout name="" text="" tooltip="" float="false" bkcolor="#006B93B2" childpadding="10" inset="3,5,3,5">
  4. <Button name="" text="" tooltip="" float="false" bordersize="0" width="32" maxheight="26" bkcolor2="#FF757676" bordercolor="#FF000000" bkimage="downlist_app.png" normalimage="file='downlist_ok.png' dest='20,14,32,26'" />
  5. <VerticalLayout>
  6. <Label text="Download_0098_44.exe" textcolor="#FFAAAAAA" showhtml="true"></Label>
  7. <Progress float="false" fgimage="file='progress_fore.png'" min="0" max="100" value="100" maxheight="7" maxwidth="200"/>
  8. </VerticalLayout>
  9. <VerticalLayout width="80">
  10. <Label align="right" text="2.04M " textcolor="#FFAAAAAA" showhtml="true"></Label>
  11. <HorizontalLayout>
  12. <Label text="<b>打开</b>" textcolor="#FFAAAAAA" showhtml="true"></Label>
  13. <Label text="<b>文件夹</b>" textcolor="#FFAAAAAA" showhtml="true"></Label>
  14. </HorizontalLayout>
  15. </VerticalLayout>
  16. </HorizontalLayout>
  17. </ListContainerElement>
  18. </List>

即,ListContainerElement的应用,该控件应该可以作为类似主界面布局容器Container一样使用,即,可以在List控件中实现任意在主界面中可以采用的复杂的列表项布局;

而动态代码实现方式应为:

  1. CListUI* pList = static_cast<CListUI*>(m_pm.FindControl(_T("listdemo")));
  2. CListContainerElementUI *pElement = new CListContainerElementUI;            CTextUI *pTemp1 = new CTextUI;            pTemp1->SetAttribute(_T("text"), _T("This is a text"));               pElement->Add(pTemp1);
  3. CComboUI *pTemp2 = new CComboUI;
  4. CListLabelElementUI *pLabel = new CListLabelElementUI;
  5. pLabel->SetAttribute(_T("text"), _T("Combo list1"));
  6. pTemp2->Add(pLabel);
  7. pLabel = new CListLabelElementUI;
  8. pLabel->SetAttribute(_T("text"), _T("Combo list2"));
  9. pTemp2->Add(pLabel);        pLabel = new CListLabelElementUI;
  10. pLabel->SetAttribute(_T("text"), _T("Combo list3"));
  11. pTemp2->Add(pLabel);
  12. pElement->Add(pTemp2);
  13. pElement->SetAttribute(_T("height"), _T("30"));
  14. pList->Add(pElement);

粗略地实现了一下,大体效果见附件截图,演示程序是就是SVN checkout出来的源码里的一个演示程序test app,只简单修改了一下界面xml文件的路径而已,就不再重复放了,exe在压缩包里面,暂时没做事件处理,主要还是演示xml的写法,仅供参考,希望大家多交流,能有更方便的实现方式      

PS: 让不付钱连试用版都不给,卖上天价的商业DirectUI开发库去史吧,oyeah~~

开源的DirectUI界面开发库DUILIB试用demo (Win32程序)的更多相关文章

  1. 开源的DirectUI界面库

    1. duilib简介 duilib是一个开源的DirectUI界面库,简洁但是功能强大.而且还是BSD的license,所以即便是在商业上,大家也可以安心使用.现在大家可以从这个网站获取到他们所有的 ...

  2. 全开源C++ DirectUI 界面库SOUI 3.0更新

    从2019.5.22开始,SOUI版本号更新到2.9.0.2,后面开始准备3.0的开发,历时近3个月,现在3.0的主要工作基本完成. 为了便于大家区别2.x,3.0启用了新的代码仓库:https:// ...

  3. js 开源k线图开发库

    https://github.com/andredumas/techan.js/wiki http://techanjs.org/ A visual, stock charting (Candlest ...

  4. DuiLib DirectUI 界面库

    国内首个开源 的directui 界面库,开放,共享,惠众,共赢,遵循bsd协议,可以免费用于商业项目,目前支持Windows 32 .Window CE.Mobile等平台. Duilib 是一款强 ...

  5. 几款国产开源的Windows界面库

    上次介绍的几款图形界面库http://blog.okbase.net/vchelp/archive/23.html都是国外的开源项目,今天介绍的几款都是国人的开源项目,大部分是采用DirectUI设计 ...

  6. 基于Chrome开源提取的界面开发框架开篇--转

    初衷 一直希望VC开发者能够方便的开发出细腻高品质的用户界面.我喜欢C++,选择的平台是Windows,所以大部分时间用VC.我自身不排斥其他技术或者开发语言或者开发工具,都去了解,了解的目的是想吸取 ...

  7. delphi for DirectUI界面库

    下面是form代码: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Cont ...

  8. JAVA与图形界面开发(Applet应用程序、AWT库、Swing)

    Applet 1)简单说,Applet就是嵌入到网页中的小程序,Java代码. 2)编写Applet程序,要继承JApplet类,并根据自己需要覆写相关方法(init.start.stop.destr ...

  9. 转:vc与界面开发之间的文章

    [很好的一篇文章,很喜欢看同行的心路历程:http://www.vckbase.com/index.php/nv/444.html] 本屌丝在新春放假期间闲来无事,在各大编程论坛溜达了一圈.发现年前的 ...

随机推荐

  1. 用mybatis时log4j总是不记录sql语句

    log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory).log4j:WARN ...

  2. C#中ORM的简单实现

    ORM在功能上主要有两个: 把从数据库中查询返回的DataSet,DataTable转化为我们可以方便使用的实体类集合: 把要对数据库操作的实体类集合或条件转化为数据库可以直接执行的SQL语句.

  3. 数据分析相关概念(numpy)

    矢量 矢量是指一堆形成的集合. 多维数组也叫做矢量化计算. 单独一个数叫做标量 例: import datetime as dt import numpy as np n2=10000 start2 ...

  4. SQLserver执行命令

    方法一:xp_cmdshell  exec master..xp_cmdshell "whoami"默认执行是关闭 EXEC sp_configure 'show advanced ...

  5. shell 命令 链接文件 ln

    1. 创建软链接文件   [  ln -s 源文件   链接文件]     类似于windows下的快捷方式 [ ln -s expr.sh expr ] 此时创建的链接文件路径是相对于现在所在的路径 ...

  6. Dubbo的底层实现原理和机制

    –高性能和透明化的RPC远程服务调用方案 –SOA服务治理方案 Dubbo缺省协议采用单一长连接和NIO异步通讯, 适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况

  7. Android 开发 框架系列 OkHttp文件下载功能实现(含断点续传)

    前言 此篇博客只是下载功能的记录demo,如果你还不太了解okhttp可以参考我的另一篇博客https://www.cnblogs.com/guanxinjing/p/9708575.html 代码部 ...

  8. 【JZOJ6368】质树(tree)

    description 大神 wyp 手里有棵二叉树,每个点有一个点权.大神 wyp 的这棵树是质树,因为 随便找两个不同的点 u, v,只要 u 是 v 的祖先,都满足 u 和 v 的点权互质. 现 ...

  9. java反射快速入门

    笔记记在了掘金,发现掘金的markdown编辑器比博客园样式要好看不少 https://juejin.im/post/5d4e575af265da03e4674e9f

  10. 国内外自然语言处理(NLP)研究组

     国内外自然语言处理(NLP)研究组 *博客地址 http://blog.csdn.net/wangxinginnlp/article/details/44890553 *排名不分先后.收集不全,欢迎 ...