DirectUI技术和界面库
在《Windows编程》中我们讲解了如何使用 Windows API 来创建界面,这些界面中规中矩,没有那么炫酷,像QQ、360、迅雷等软件的界面是怎么做的呢?
QQ、360、迅雷等常见的软件大都使用了 DirectUI 技术!
DirectUI 是直接绘图的意思,也就是通过 GDI 直接在窗口上绘制各种控件。这些控件不是真正的 Windows 控件,它们仅仅是 GDI 绘制出来的图像,只要给图像绑定上事件,就可以模拟出控件的效果。
例如,我们可以绘制一个红色背景的矩形,并在矩形中间添加一行白色文本,当鼠标经过时,背景变成绿色,当鼠标点击时,弹出确认框,就模拟了一个控件的效果。
DirectUI 技术不但应用在 QQ、360、迅雷等国产软件,Windows 中也有广泛应用,例如浏览器左侧的 TaskPanel,控制面板导航界面,Media Player 播放器,即时通讯工具MSN Messager等。
界面库主要用来绘制界面和处理事件,都是“表面”的工作,其他功能很弱,或者说没有,不能代替 Windows API、MFC、WTL 等。
DirectUI 界面库有很多,有收费的有免费的,有国内的也有国外的,但没有哪一种界面库一统江山,各有优缺点,这里我们选择 Duilib。
Duilib 是一个被广泛使用的界面库,免费开源,支持XML布局,易于实现各种超炫的界面效果,如换色、换肤、透明等,国内很多大公司也在使用,如华为网盘、PPS(PPS和华为之前都是用UIPower)、金山快盘(也没用自家的界面库)、酷我音乐、爱奇艺视频、百度杀毒、百度卫士、百度管家等一系列产品。






QQ、360、迅雷等常见的软件大都使用了 DirectUI 技术!
DirectUI 是直接绘图的意思,也就是通过 GDI 直接在窗口上绘制各种控件。这些控件不是真正的 Windows 控件,它们仅仅是 GDI 绘制出来的图像,只要给图像绑定上事件,就可以模拟出控件的效果。
例如,我们可以绘制一个红色背景的矩形,并在矩形中间添加一行白色文本,当鼠标经过时,背景变成绿色,当鼠标点击时,弹出确认框,就模拟了一个控件的效果。
DirectUI 技术不但应用在 QQ、360、迅雷等国产软件,Windows 中也有广泛应用,例如浏览器左侧的 TaskPanel,控制面板导航界面,Media Player 播放器,即时通讯工具MSN Messager等。
界面库
DirectUI 仅仅是一种技术方案,要实现它,就得编写大量的代码,主要工作是控件的绘制、事件的绑定、消息的流转等,我们自己实现起来非常困难,需要借用别人的代码。这些已经封装好的代码称为界面库。界面库主要用来绘制界面和处理事件,都是“表面”的工作,其他功能很弱,或者说没有,不能代替 Windows API、MFC、WTL 等。
DirectUI 界面库有很多,有收费的有免费的,有国内的也有国外的,但没有哪一种界面库一统江山,各有优缺点,这里我们选择 Duilib。
Duilib 是一个被广泛使用的界面库,免费开源,支持XML布局,易于实现各种超炫的界面效果,如换色、换肤、透明等,国内很多大公司也在使用,如华为网盘、PPS(PPS和华为之前都是用UIPower)、金山快盘(也没用自家的界面库)、酷我音乐、爱奇艺视频、百度杀毒、百度卫士、百度管家等一系列产品。
QQ、360、迅雷都有自己的 DirectUI 界面库,没有使用 Duilib。下面是Demo都是用Duilib实现的:





