近年的样机开发正接近尾声。现在回头看看回顾界面库开发走过的历程,觉得走了不少弯路,积累了不少经验。
昨天查找了一些界面库的资料,忽然有种豁然开朗的感觉。关键字是“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界面库旨在满足客户端界面快速开发的需要,同时融入业界领先的皮肤技术,为用户创建更加高效,专业的界面。
绕了这么大一圈,结果竟是殊途同归。当发现这些信息的时候,界面库已经基本修改完毕。