duilib库分析日志 (一) : 简单了解下duilib库

来源:互联网 发布:直播美颜软件下载 编辑:程序博客网 时间:2024/05/17 23:48

最近一直在想做个DirectUI库. 先找了几个UI库, 也没做过啥Demo. 1年前看过国外的viksoe库(URL: http://www.viksoe.dk/code/index.htm) 因水平有艰也没能坚持看完.

后来找到国内一款牛X的开源库duilib, (URL: www.duilib.com)这个团队还是基于viksoe库开发的, 但完善的很好.  其中有个UIDesigner设计器可以快捷的设计出duilib库可以解析的XML文件( 设计者的主页: http://www.taxue.org ).  以上都是牛人.   其实到他们的BBS会有很多文档可以参考. http://bbs.duilib.com

本人只想快点跟上他们, 所以会陆续在此记录理解到的东西. 


1. 整个框架我没法画出来, 还好"踏雪流云"已经画出.(URL: http://www.taxue.org/?p=55  )可以参考下.

2. 简单记录下主要类的功能

CPaintManagerUI很重要的一个类, 管理所有控件树, 并对控件相关消息产生相应的用户层的事件. 显示控件到用户窗口上.

CWindowWnd 相关于WTL库里的CWindow库. 有创建窗口对象, 注册窗口类, 接管消息处理的函数. 也就用户自定窗口的父类.

CControl 所有DUI控件的基础类. 以后的所有控件都会从这个类继承. 包含了控件所需的基本信息. 

CContainter窗口类的基类. 所有布局类, 列表控件, 组合框, 都会继承于此. 功能是可以放置基本控件或自定义控件类对象. 还有水平于垂直滚动条功能.

CDialogBuilder解析Skin相关的XML文件, 并转为控件树. 包含了读文件/解压包文件功能, 会利用CMarkup类解析XML中的元素和属性, 并设置到相应的控件对象中.


CDelegate相关类挺有意思, 类似C#里的委托功能. 

CRender类对于区域管理打包打的不错.(主要操作HRGN对象)

CRenderEngine  这类纯粹就是用于方便画图. 有关基本线条, 贴图, 透明贴图很有帮助. 



恩.... 现在就大概看了这些.  个人大概的分析, 所以难免会出错. 希望能指正.   下回看下消息处理流程.



原创粉丝点击