关于DirectUI 转一篇过去发在CPPBLOG的文章

这几天把过去的一些东西整理了一下,正好翻到关于WINDOWS UI的东西。顺手把以前发在CPPBLOG的博文转过来。
当时发在BLOG上还有人质疑说是多此一举。现在看看基本上WINDOWS上的应用大多是DirectUI的了吧。当然一些业务系统对界面要求低就无所谓了。还有,WPF搞得不多。也许以后用WPF会好些。

以下是正文。

近年的样机开发正接近尾声。现在回头看看回顾界面库开发走过的历程,觉得走了不少弯路,积累了不少经验。
昨天查找了一些界面库的资料,忽然有种豁然开朗的感觉。关键字是“DirectUIHWND”。

众所周知,在Windows界面开发中,使用VC中一般的控件很难达成好的界面效果。同时,控件的功能和效率都很难令人满意。

在今年的开发中,决定在Wince上实现一个符合MVC的应用框架。其中View层搭建在MFC框架之上。所有的“窗体”、“控件”都从CWnd继承,
拥有自己的消息循环和DC。
这个设计的主要问题是:
1.内存占用。
2.运行时效率。
3.无法有效的进行双缓绘图。
4.各控件的GDI对象相关操作过于频繁造成内存碎片。

经过多次改进,当前的设计方式已经改为:
1.只有一个实际窗体。保持全局DC和相关的一些GDI对象。统一管理、操作。
2.各逻辑窗体、控件不继承自CWnd。刷新等操作完全由实际窗体进行。
3.实际窗体与逻辑窗体配合,实现各逻辑窗体的消息响应机制。

这种设计方法,正好与DirectUIHWND的基本设计思想暗合。

下面是DirectUIHWND相关的一些信息:
“DirectUIHWND”,意为Paint on parent dc directly。 即子窗口不以窗口句柄的形式创建,只是逻辑上的窗口,绘制在父窗口之上。这种方式最大的好处在于可以很方便的构建高效,绚丽的界面。国外如微软,国内如腾讯,百度等公司的客户端产品多采用这种方式来界面,从而很好的将界面和逻辑分离,同时易于实现各种超炫的界面效果如换色,换肤,透明等。DirectUI界面库旨在满足客户端界面快速开发的需要,同时融入业界领先的皮肤技术,为用户创建更加高效,专业的界面。

绕了这么大一圈,结果竟是殊途同归。当发现这些信息的时候,界面库已经基本修改完毕。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: