DirectUI浅谈

DirectUI是一个软件设计思想,这个思想来源于Windowless理念,这个思想可以表述为“只有主窗口有句柄,其他的窗口都是以控件的形式被绘制出来”,所有采用这个思想设计的开发框架都可以称为DirectUI。目前流行的DirectUI库开源的有duilib,REDUI,Bkuilib, UIFeature, 以及国内有名的几家做UI库的公司的产品,例如上海勇进,炫彩界面库,另外腾讯,迅雷这些公司都有自己的DirectUI库,只是他们不公开,只是自己的产品用。
    因为有句柄的窗口消息和原理的公开所以使得它很容易被破解,降低了窗口信息的不安全性,所以就有人想给窗口加上锁来保证窗口信息的安全。 最早加锁的人还是微软自己,MSN要保护用户隐私,搞了个DirectUIHWND,被人发现后,DirectUI这个名称就逐渐扩散开来,也有越来越多的软件给自己的窗口加了锁。
    用 DirectUI框架开发的程序本质上是一个Win32程序。与MFC相比较,区别是除了主窗口之外的各种窗口和控件是由微软来实现还是UI库自己实现。各种不同的UI库是通过WindowsAPI的封装来实现自己需要的控件,同时设计出自己消息响应机制。
     DirectUI的两大特点,其一是 Windowless理念带来的安全性,另外一个就是界面和逻辑分离为开发带来的高效性。 DirectUI使用XML文件来描述界面显示,通过编程语言来描述界面逻辑。这使得开发效率得到了提高,同时对于为后期的维护降低了工作量。
    对于不同的UI库, 单纯讨论每个库的优劣是没有意义的,而是要放到具体的应用场景里来看,每个库都有自己擅长的场景。 目前 大多数C++的DirectUI停留在XML配置静态UI,然后C++来实现后台逻辑。
    DirectUI还有以下优点,基于Win32API,没有framework依赖。易于改变皮肤色调。支持大多数控件透明,包括子窗口透明。     

你可能感兴趣的:(DirectUI)