DirectUI浅谈
2016-05-15 10:24
232 查看
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依赖。易于改变皮肤色调。支持大多数控件透明,包括子窗口透明。
因为有句柄的窗口消息和原理的公开所以使得它很容易被破解,降低了窗口信息的不安全性,所以就有人想给窗口加上锁来保证窗口信息的安全。最早加锁的人还是微软自己,MSN要保护用户隐私,搞了个DirectUIHWND,被人发现后,DirectUI这个名称就逐渐扩散开来,也有越来越多的软件给自己的窗口加了锁。
用DirectUI框架开发的程序本质上是一个Win32程序。与MFC相比较,区别是除了主窗口之外的各种窗口和控件是由微软来实现还是UI库自己实现。各种不同的UI库是通过WindowsAPI的封装来实现自己需要的控件,同时设计出自己消息响应机制。
DirectUI的两大特点,其一是Windowless理念带来的安全性,另外一个就是界面和逻辑分离为开发带来的高效性。DirectUI使用XML文件来描述界面显示,通过编程语言来描述界面逻辑。这使得开发效率得到了提高,同时对于为后期的维护降低了工作量。
对于不同的UI库,单纯讨论每个库的优劣是没有意义的,而是要放到具体的应用场景里来看,每个库都有自己擅长的场景。目前大多数C++的DirectUI停留在XML配置静态UI,然后C++来实现后台逻辑。
DirectUI还有以下优点,基于Win32API,没有framework依赖。易于改变皮肤色调。支持大多数控件透明,包括子窗口透明。
相关文章推荐
- Material Design(三)--UI控件之CardView
- Material Design(二)--UI控件之RecyclerView
- build.gradle中引入jar
- could not execute query 项目中使用使用Hibernate作为持久层框架时,数据库改名后容易忽略的问题
- asyUI tree点击文字展开节点
- [GUIDE] How to Setup Ubuntu 16.04 LTS Xenial Xerus for Compiling Android ROMs
- UI设计——磨皮
- quickstack is a tool to take call stack
- 1670: [Usaco2006 Oct]Building the Moat护城河的挖掘
- GetBuiltProjectOutputRecursive error running Xamarin Forms iOS on Visual Studio
- Android 在其他线程中更新UI线程的解决方法
- UIDeviceOrientation 和 UIInterfaceOrientation 设备旋转的用法
- iOS开发遇到的那些坑之 NSURLRequest开发之URL编码
- Java GUI编程
- 查libevent不能编译出动态库问题
- iOS图形绘制UIBezierPath篇
- CDH5.7Hue使用sqoop导出mysql数据报错
- 第十六章图形用户界面编程(GUI)
- Uva1157——Unique Snowflakes
- BlockingQueue