`
tianfeng722
  • 浏览: 7779 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

【转】使用DirectUI技术实现QQ界面

阅读更多
一.介绍

DirectUI技术说白了就是XML配置文件+图片+JavaScript控制界面。这点与网页css+图片+JavaScript十分相似,就是如开发网页一般开发桌面程序界面,这个开发效率当然大大的提高。将程序员从繁琐的界面绘制工作中解脱出来,专心开发逻辑代码。还能大大减少代码量,因为据统计,传统MFC程序中,界面代码大约占总代码的1/3强!也就是说,这个1/3的代码都可以由xml+javascript替代!

同理,如果网页开发时,每个图片都需要由web程序绘制,你能想象一个网页的代码量有多少吗?

简直不能想象,而传统Window程序就是如此!

DirectUI技术最早被用于window xp资源管理器左边栏,被称为task folder.而DirectUI被广为国人所知,还得感谢腾讯公司。QQ2009的界面就是使用DirectUI技术开发的。类似的有微软的MSN,OCS和百度Hi。最近的Office2007 Ribbon界面,如果使用Spy++查看,可以见到一个名为"NetUI"的窗口,其实这也是微软内部DirectUI的一个变种。不过无论是微软,腾讯,还是百度,都使用了DirectUI技术来开发自己的软件界面,却不肯将其公开。本文将介绍如何使用DirectUI技术开发一个类似QQ的界面演示程序。

二.背景

与DirectUI最相似的要数微软最近推出的WPF,其设计思想是相同的。只不过WPF只能运行于托管环境下。window下的C++程序员一直呼吁微软推出native WPF,也就是非托管的WPF。不过微软给出的答案是:NO。所以WPF将定位于为.NET战略服务。使用WPF开发的界面程序,必须带上庞大的.NET运行环境。不过随着Window 7的普及,这个状况会有所改变(window 7继承了.NET环境)。

不过,我想,如果许多公司的产品都是需要支持Window XP(最少QQ现在还是支持Window 2000),所以WPF不是桌面应用程序界面开发的首选。

三.实现

废话不多说,先看演示程序的图片,足够以假乱真吧?!

在xml文件中也引入了网页中样式(style)的概念,style控制着网页中一个元素的外观。同理,directui xml文件中的样式(style)控制着一个控件的外观。同样的一个button,使用了不同的style,外观也不一样。如下面的代码及图片所示。

参照网页开发中的JavaScript,DirectUI JavaScript可以控制控件的状态、文本、显示/隐藏、位置等等属性。DirectUI JavaScript是基于事件,比如在button1点击事件中,改变button2的文本。或者button1点击事件之后,button1就要禁用。像这样的需求,在界面开发中是比较常见的。

在c++代码中,剩余的只是界面与程序逻辑的借口。比如,QQ2009中从服务器接收添加用户的通知,然后操作界面将此用户显示出来。如此看来,c++代码中完全没有了绘制界面的代码。

四.后话

DirectUI是个好技术,只是微软不愿将其公开,其中最大的原因是与它的.NET战略冲突。而由DirectUI技术演变而来的WPF只适用于托管环境。不过,还是有几个公司或者个人开发了自己的DirectUI界面库。我知道的,有:

DirectUI.com // 公司开发的。居然连正式版和试用版一样!?

Bodsoft DirectUI // 公司开发的。有试用版。发现一个上市公司成功案例,www.94kuai.com 网宿科技

UIEasy DirectUI // 个人开发的,比较简单。没设计工具。

分享到:
评论

相关推荐

    direct ui使用说明文档

    微软公司从Windows98、Windows2000再到今天...本指南详细介绍了DirectUI界面库的使用方法,通过本指南的学习可以让我们了解DirectUI界面库,掌握DirectUI Builder的使用方法和DirectUI界面库与程序集成开发的相关技术。

    使用开源的DirectUI界面库Duilib开发的山寨QQ

    使用开源的DirectUI界面库Duilib开发的山寨QQ

    vc6 DirectUI 模仿QQ界面

    采用的是炫彩界面库,利用设计器设计一个布局文件,然后代码加载,实现了qq的大致界面,和 好友列表,大家可以参考一下

    DirectUI界面开发实例

    DirectUI界面开发实例,无框架设计,采用直接贴图的方式,便于上下层次的位图处理,MSN,QQ,IGO,WOW等很多软件均采用此方式开发界面

    vc++制作DirectUI界面.windows DirectUI界面制作教程-这是目前网上能找到的最详细的教程了+源代码

    windows DirectUI界面制作教程-这是目前网上能找到的最详细的教程了+源代码 windows任务栏也是用此技术制作的 qq,微信,office,MSN的界面都是用此技术制作的

    directui--demo

    从网上收集的DirectUI资料,可以轻松实现类似360,QQ的界面。其中有几个是收费版的demo,有几个是开发源码的demo。有源码的几个工程中的控件都不是标准的Windows控件,当然没有收费版的方便。如果需求不是很大,可以...

    MFC标准控件+强大的DirectUI界面库(源码)

    一)功能描述 ...DirectUI:包含一些常用控件 button, checkbox, groupbox, label, progress, radiobox, slider等,可以通过XML来解析控件支持点击换页、支持拖动换页 二)源码联系我 QQ:43599123

    DirectUI for VC6.0(开源).rar

    VC6.0一套DirectUI界面库(开源)

    模仿QQ好友管理器界面代码(基于DirectUI界面库SOUI)

    一个可以容纳大量数据的listctrl控件,基于directui界面库soui开发

    炫彩界面库(DirectUI,C&C++,v1.3.1)

    2.采用DirectUI设计思想,在窗口内无子窗口,界面元素都是一个逻辑上的区域,以方便开发出炫彩高效的软件. 3.界面效果出众,解决了传统UI子窗口抖动,闪烁,效率低,代码臃肿等问题,让您的软件一跃而出. 4.基于炫彩界面库...

    炫彩界面库(DirectUI,C++,v1.0)

    使用说明--------------------------------- 编码方式 : UNICODE; bin 文件夹 : 是一个编译好的演示程序; xc 文件夹 : 炫彩界面库文件和演示项目; 演示项目-------------------------------- DemoSimpleWnd 文件夹 ...

    IceMusic 音乐播放器 MFC + DirectUI 开发 只有EXE

    用MFC + DirectUI 开发 只有EXE 没有源代码, 修改这 高仿QQ电脑管家界面http://blog.csdn.net/geniusice18/article/details/16369499

    高仿QQ电脑管家8界面(源代码)

    高仿QQ电脑管家界面 用的是MFC + DirectUI 实现 介绍看这:http://blog.csdn.net/geniusice18/article/details/16369499

    精美漂亮高仿QQ2012登录界面MFC源码

    特别精美的高仿QQ2012登录界面MFC源码 亲测可用,出非常好啊,分享给大家。 基本和QQ是一样的,希望对大家有帮助

    IceMusic 音乐播放器(MFC + DirectUI 开发 只有EXE)(新)

    用MFC + DirectUI 开发 只有EXE 没有源代码, 修改这 高仿QQ电脑管家界面http://blog.csdn.net/geniusice18/article/details/16369499

    酷炫界面引擎(KXUI) - 全新框架逻辑[ DUI DirectUI 自绘 皮肤]-易语言

    酷炫界面引擎(KXUI) ...热烈欢迎与我交流有关DirectUI有关"技术"..... 请在二开.参考.修改,备注一下基于东子的酷炫界面引擎(KXUI) .... 如发现BUG,那是正常情况,别问我怎么解决,自己打开源码解决...

    炫彩界面库

    采用DirectUI思想,在窗口内没有子窗口,只有界面元素;所有界面完全自绘,可实现特殊效果,界面的绘制由绘制类管理, 界面皮肤自由切换,用户可轻松实现自己的皮肤风格; 3.界面元素支持背景透明,元素半透明效果,切换皮肤...

    炫彩界面库(c++,v1.0.5)

    采用DirectUI设计思想,在窗口类无子窗口,元素都是一个逻辑上的区域; 3.界面效果出众,解决了传统UI子窗口抖动,闪烁,效率低,代码臃肿等问题 4.可视化界面设计器,为您带来飞一样的界面设计速度,快速开发发挥到极致...

    界面库XUI Demo

    XUI界面库是一套基于directUI 的界面框架库,所有控件元素全部自绘,可以通过一个style脚本文件控制控件元素的外观,支持bmp、jpg、gif、png、icon图片格式,支持lua脚本(C++可以非常方便地扩展lua,而无需理解lua...

Global site tag (gtag.js) - Google Analytics