Alterto一个毕业不到两年,一个三流本科院校毕业的菜鸟,酷爱编程。众多语言中唯独对c/c++情有独钟。最初接触的就是windows程序设计,一直以做出很炫的界面为目标,然后学习了MFC,使用windows标准控件做界面,此时发现Windows所提供的标准控件根本无法做出我想要的界面,于是开始学习windows标准控件的自绘,经过一段时间努力,跟随小金鱼老师学习自绘,自绘按钮,TAB,组合框等windows标准控件基本可以实现我所想要的界面。但是在学习自绘的过程中,也发现了标准控件自绘中存在的很多不足:
首先:普通的控件自绘制仍然是在一个新建的窗口上进行,也就是说所绘制出来的界面中,存在多个子窗口,这样一旦处理不当很容易造成界面闪烁,解决方法是(使用双缓冲,WS_CLIPCHILDREN,NULL背景画刷)。
其次:传统界面很难实现一些炫酷效果,例如如果需要做类似于QQ一样半透明背景效果的界面(我的理解:用一张半透明的PNG图片作为窗口的背景)需要设置层级窗体,但此时窗口上的子控件将无法被现实出来,原因在于普通窗口的绘制是在OnPaint函数中进行,一旦设置层级窗体,其界面绘制工作将搬移到UpdateLayeredWindow函数当中。
后来接触Dui,开始尝试使用网上大牛们所写的界面库,尝试寻找一个适合自己的界面库。但是这并非易事,主要原因在于:网络上优秀的dui界面库大部分不开源,而且价格昂贵,开源的界面库很多却有做的不完善。但是在开源界面库下仍然存在着不少精品,这在天朝体制下实属不易。
当属Duilib、与DuiEngine,但个人感觉还是DuiEngine要好一点(在win7下不停伸缩用duilib所写的界面感觉还是会出现黑影,再者duilib的作者基本已经不为其做更新了【大概是被天朝体制所伤,无奈啊】)。
那Alterto为DuiEngine写教程的初衷又是为何?
首先,受Alberl的启发,相信很多人都看过Alberl为Duilib写得教程,个人感觉写的太好了,在当时就连我这样的菜鸟也看懂了(同时也感叹,同样是毕业一年多的人,差距怎么这么大那0.0,咳!要走的路还有很长啊。)。再者,DuiEngine现在几乎也没有一份像样的教程,作者平时也比较忙根本也没时间来做这些东西,这么优秀界面库却没有一份像样的教程感觉太可惜了,于是便萌发了为其整理教程的念头,同时也希望自己在写教程的同时能更好的掌握DuiEngine。
还是那句话,由于本人还处于菜鸟阶段,其中难免有错误,还请各位大牛看到后能帮我指出,更希望各位大牛不要喷我,这样我才有动力将这份教程一直写下去。好了废话不多说转入正题。
一个新兴的开源界面,基于金山的bkwin代码,经过近2年的完善,核心框架部分亦经历多次大的重构,目前应该说90%以上的基因都是新的。
主要特点(相对于bkwin):
1、框架更加完整,一般的界面都不需要依赖真实子窗口(原realwnd),当然也支持realwnd。
2、不依赖于WTL,可以在win32及MFC里使用了。
3、更多复杂控件实现:如treectrl等。
4、支持使用UpdateLayeredWindow实现异形窗口,只需要修改一个XML属性。
5、效率更高,所有绘图操作都在一个内存位图上进行,避免了大量的位图拷贝操作。
6、结构更清楚。
口说无凭,DuiEngine到底效果如何那,请看下面Demo
毋庸置疑,效果简直太棒了!!小伙伴们是否被惊呆了。而且绝无任何界面闪烁状况。
1.工欲善其事,必先利其器,这里建议大家选择vs2008作为IDE,如何安装就不说了
2.下载DuiEngine,DuiEngine的SVN:http://code.taobao.org/svn/duiengine/trunk,大家可以安装一个免费开源客户端TortoiseSVN,
下载地址与安装方法这里不做过多叙述。下载完后,找一个你想要存放DuiEngine工程的目录下,点击右键选择SVN Checkout,
填写信息后点击OK
下载完后如下:
3.进行相关配置,DuiEngine的作者果然是活雷锋,已经帮我写好了一个开发环境配置工具,运行duiengine\wizard目录下
的wizard.setup.exe进行配置,配置过后最好重启一次电脑,可以打开VS2008命令提示,输入SET,查看环境变量是否已经被设置。
4.编译DuiEngine内核,打开DUIEngine的解决方案
选择菜单“生成”--》“批生成”,因为我们通常编译的都是win32应用程序,所以这里我们把X64平台全部去掉,因为Alterto只学过MFC,WTL并没有接触过,所以这里我将Debug_ATL也去掉(除非你安装了WTL否则将提示无法打开包括文件:“atlapp.h”: No such file or directory”),因为我们只需要用到,Release和Debug两个版本的动态链接库,所以只生成下面两项即可。
编译大概需要几分钟的时间,编译完成后在下面目录下生成debug和release版本的动态库和静态链接库
在不熟悉的情况下建议将工程放到与duiengine同级的目录,如果前面配置都正确,此时在模板下会有一个DuiEngineWizard模板
然后将我们生成DUIEngine_d.dll和DUIEngine.dll文件分别拷贝到工程目录文件下,Ctrl+F5。哈哈!见证奇迹的时候到了
不用添加任何代码我们就生成了一个带皮肤的Dialog。
好了!DUIEngine的配置就讲到这里,Alterto要去休息了。