DirectUI,标准界面的又一次挑战!

 DirectUI 现在开始火了,它最早出现在微软的msn上,现在此技术已经应用到office等大型产品中。

国内近来随着知名的qq,迅雷采用此技术,更是把DirectUI彻底推向了前台。那么什么叫DirectUI ?你真的需要DirectUI 吗?

我们先说说DirectUI的原理,DirectUI顾名思义就是界面直接呈现,国外也称为winHandle-less,就是句柄少的意思。

那么它为什么能直接呈现界面而且句柄少呢,我们先从windows标准界面说起,我们都知道windows每个控件都有一个句柄,系统通过发送消息到控件这个句柄来完成消息传递。那么如果句柄少,消息传递就少,自然效率就高一些,这个也是DirectUI 的好处之一,当然这个不是DirectUI 主要的目的。因为标准控件在DirectUI 下是无法显示的,虽然所有消息都能收到,但是最关键的WM_Paint消息在使用UpdateLayeredWindow后失效了。这就要求所有的控件在DirectUI 下都需要模拟,那么就突破了标准控件的一些限制,能呈现更好的视觉效果。也许这里就有人要问为什么要用UpdateWindowsLayer呢?不用UpdateLayeredWindow那么标准控件不是都可以用了吗?这就要从一些实际需求来解释这个问题,一个最简单的要求就是有些软件需要窗体背景透明但是窗体里的内容不透明,这个时候按传统的方法你怎么做呢?通过SetLayeredWindowAttributes设置透明度

你会发现窗体里所有控件的透明度也跟窗体一样了,这显然不符合要求,那么怎么办呢,以前比较灵活的做法就是双窗体方法,这个方法很多地方都有讲述,我这就解释了,这也不是我们今天讨论的话题,因为它不是真正的DirectUI ,根据这个原理大家就能容易的区分一个程序是否是DirectUI ,用spy++看窗体上的控件,如果基类不是微软的标准控件,那么就有可能采用了DirectUI 。

什么样的应用程序可以用directui呢?1界面要求漂亮的,2更新频率比较低的(因为界面刷新一次就需要把所有控件重绘一次)这也是好多视频播放器不采用的原因。3控件类型少的,控件类型越多意味着你需要模仿的控件也越多,工作量自然加大了。4,窗体上控件尽量少,越少画的内容也就自然少了,效率就上去了。

 

文章最后贴一个在xp下的directui表现,这也是directui的好处就是xp,vista,win7界面效果都是一致的

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值