快速入门系列零:玛德界面库的来由、窗口、皮肤、项目管理等基本概念

       一段时间以来,科学家们都在研究DirectUI相关的界面技术。作者本人在2012年接触了这个神器的技术,发现比之MFC做界面,简直就是嫦娥和猪八戒的区别啊。之后找到了DuiLib为代表的国内作品,感谢DuiLib的开发者开源,于是我开始拜读DuiLib的源码。

       在LongLongAgo之前,作者是设计了一个在MFC基础控件上重绘的界面库代码的。其原理就是通过Xml来表述控件界面行为,然后按照Xml的约束来对控件进行重绘。接触了DuiLib之后,在惊叹DirectUI设计思想的先进的同时,也对官方DuiLib的代码的结构产生了很多自己的想法,于是开始大刀阔斧的重构。

1. 替换了Xml解释部分,换成了作者自己设计的Xml语法解释器,主要是为了自动适应Xml文件的内码格式;

2. 重构了DuiLib底层解释UI属性的代码,主要是为了更好的扩充UI属性,也为了统一解释接口等;

3. 增加了一个Notify消息delegate模式,这样UI的NotifyEvent可以直接调用到相应的回调函数里,当然消息处理函数可以是全局函数或者类成员函数;增加Windows消息的delegate模式,当然消息处理函数可以是全局函数或者类成员函数;

4. 增加了Lua脚本支持,把UI的API接口导出到了Lua,每个窗口都引入了若干Lua脚本,这样可以在Lua内写UI的Notify事件处理了,这个框架的开发流程更简洁了;

5. 重构WS_EX_LAYERED风格的窗口的绘制以及由此引起的一系列问题(我们有理由怀疑,这个坑仍然没有填完。可喜的是在作者的异形半透明项目中没有再发现问题);

6. 重构窗口绘制和消息处理,这是为了真正能创建若干个Window,以后再也不用把所有界面都堆积(通过include引入的xml文件也算这种类型)到一个Xml内了,为此引入了“窗口皮肤”的概念。也就是一个Window对应一套皮肤,其中包含一个皮肤UI的描述文件“*.xml”,一个静态建立跟Lua交互的文件“*.Reg.Xml”,若干个Lua脚本文件“*.lua”;

7. 增加了几个UI:一个使用MFC思想设计的TabPage属性页(TabCtrlLayout和TabPageUI),一个可以包含独立Window的WindowOwnerUI,一个新的TreeViewUI和TreeNodeUI,一个支持Edit的ComboBoxUI,其他对DuiLib里原有UI的功能扩充等;这些都会在以后的“快速入门系列”文章里做介绍;

8. 重构菜单相关功能,把菜单修改成可以使用“窗口皮肤”的模式,也就是可以任意设计菜单了,不在拘泥于MenuUI和MenuElementUI,而且也更容易的创建;

9. 增加了Gif动画支持,自己写了个解释Gif图片格式的功能,然后可以在任何使用image的地方把静态图片设置成gif图片了;配合“异形半透明”窗口甚至可以做一个动态背景的异形窗口;

10. 使用玛德界面库写了个玛德界面的编辑器,并且实现用“玛德界面编辑器”来开发“玛德界面编辑器”自己;

11. 增加了动态扩充UI的接口:可以通过自定义UI的方式来替换系统提供的UI,也可以自己设计新的UI。使用方法也很简单,只需要把编译出来的dll文件改名为(*.3K)并放到特定目录下&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值