一直没有能用mfc制作漂亮的界面,在网上找了很久这方面的开源资源。一直纠结与是否使用WPF还是DirectUI的时候,最终还是决定研究一下duilib的开源代码
首先:直接去网站下载了duilib的代码,http://www.viksoe.dk/code/windowless1.htm,https://github.com/duilib/duilib
其实:网站查找了一些研究代码的思路,以便更快的上手, 虽然经常在浪费时间,但是还是希望在一定的时间内去提高效率,首先搞清楚其整体结构
2. 工具库
由于duilib没有对外部的任何库进行依赖,所以在其内部实现了很多用于支撑项目的基础类,这些类分布在Util文件夹中:
- UI相关:CPoint / CSize / CDuiRect
- 简单容器:CStdPtrArray / CStdValArray / CStdString / CStdStringPtrMap
上面这些类看名字就基本能够理解其具体的含义了,当然除了基本的基础库,还有一些和窗口使用相关的工具的封装:
- 窗口工具:WindowImplBase,这个工具我们在这里不详述,后面会再次提到。
3. 控件库
控件库在duilib的实现中被分为了两块:Core和Control:
- Core中包含的是所有控件公用的部分,里面主要是一些基类和绘制的封装。
- Control中包含的就是各个不同的控件的行为了。
Core部分和控件相关的类图非常简单:
duilib-core: