directui

DirectUI

DirectUI意为直接在父窗口上绘图(Paint on parent dc directly)。即子窗口不以窗口句柄的形式创建(windowless),只是逻辑上的窗口,绘制在父窗口之上。微软的“DirectUI”技术广泛的应用于Windows XP,Vista,Windows 7,如浏览器左侧的TaskPanel,控制面板导航界面,Media Player播放器,即时通讯工具MSN Messager等。   

DirectUI好处在于可以很方便的构建高效,绚丽的,非常易于扩展的界面。国外如微软,国内如腾讯,百度等公司的客户端产品多采用这种方式来组织界面,从而很好的将界面和逻辑分离,同时易于实现各种超炫的界面效果如换色,换肤,透明等。

DirectUI 旨在满足客户端界面快速开发的需要,同时融入业界前沿的皮肤技术,为用户创建更加高效,专业的界面。   

2.1 DirectUI 主要特性   

◆ 支持皮肤对象的布局   

◆ 支持皮肤脚本(JavaScript)控制,可以让界面与逻辑彻底分离   

◆ 支持bmp、png、jpg、gif、tga等图片格式   

◆ 支持多图层Alpha混合特效   

◆ 提供界面设计工具DirectUI Builder,支持拖拽式界面设计,让界面开发所见即所得   

◆ 开放式开发平台,所有控件均为插件方式管理,支持用户自定义控件开发,与DirectUI平台无缝兼容   

◆ 支持Windows平台所有的开发工具(VC++、VB6、VS.Net、PowerBuilder、Delphi、C++Builder、E语言)   

◆ 支持所有标准控件的换肤   

◆ 支持皮肤对象的导出与导入   

◆ 支持Windows主题导入,让标准界面皮肤的制作简单快捷   

◆ 让客户端代码简洁明了

要想学习DirectUI技术,到网上查了一下,得先学习好Skin++技术,所以,先看一下什么是Skin++吧

Skin++,系统软件,采用独特的软件界面开发技术,让原本复杂繁琐的界面编程变得轻松自如,随着换肤技术的不断进步,Skin++不仅是功能强大的换肤控件,而且是一款非常通用的换肤插件。只需要在您的程序中添加一句代码,Skin++就能让您的界面焕然一新,并拥有多种主题风格和色调的动态切换功能。

Skin++ 特性  

◆ 换肤彻底,支持Windows系统对话框与控件换肤;   

◆ 换肤全面,支持所有的Windows标准控件;   

◆ 支持所有Win32/Win64平台,包括.Net应用程序;   

◆ 使用简单,只需一行代码实现整体换肤;   

◆ 可视设计,提供皮肤设计工具,所见即所得的设计开发环境;   

◆ 色调变换,支持皮肤色调变换,每一套皮肤都拥有N种色调风格;   

◆ 支持广泛的开发工具, VC/VB/Delphi/C++Builder/VS. Net/PowerBuilder/E;   

◆ 支持流行的Windows操作系统;   

◆ 皮肤资源海量,提供方便的皮肤转换工具,可以将目前主流的皮肤主题转换成Skin++格式;   

◆ 支持Unicode,提供多种编码格式;   

◆ 支持静态库链接,与客户程序可以进行无缝整合;   

◆ 支持第三方控件;   

◆ 界面与业务逻辑彻底分离;

Skin++ 实现原理  

Skin++属于第二代的外挂式的界面库。   

Skin++ 提供了SkinBuilder 工具将所有控件的资源全部设计成为一个独立的文件,便于在应用程序外部独立地进行增删改操作。   

Skin++ 主要采用Hook与子类化技术来实现应用程序的自动换肤。

Skin++换肤的大致流程  

1、应用程序启动,加载Skin++库;   

2、执行Skin++加载皮肤文件API函数;   

3、Skin++ 安装窗口过程等类型Hook,准备截获应用程序所有窗口的创建事件;   

4、Skin++ 收到窗口创建等消息,根据类名、风格等一些条件来判断是否对该窗口进行子类化;   

5、窗口子类化即可以收到该窗口所有的消息;   

6、根据不同的消息进行相应的处理。如:WM_PAINT消息,Skin++对其进行绘图的操作;   

7、绘图中需要用到图片、文字、字体等资源即根据ID、名称等条件到皮肤文件中去查找;   

8、控件运行过程中,各种界面行为的变化均可通过处理消息与API函数来进行;   

9、控件销毁时,Skin++即对其进行反子类化,将Skin++换肤前的消息过程地址重新设成当前的消息过程;   

10、控件所有的消息不再经过Skin++消息处理函数。控件执行其默认的窗口消息处理函数;   

11、应用程序退出,Skin++库被卸载,在卸载之前Skin++获得通知,Skin++便在内部执行Hook的反初始化与资源文件的清理。

Skin++ 支持的开发工具  

支持VC++各种版本:VC6,VC2003,VC2005,VC2008;   

支持VisualStudio. Net各种版本:VisualStudio. Net 2003, VisualStudio. Net 2005, VisualStudio. Net 2008;   

支持 PowerBuilder 各种版本:PowerBuilder 6.0,7.0,8.0,9.0,10.0,10.5,11.0;   

支持 Delphi各种版本:Delphi 4,5,6,7,8,2005,2006;   

支持C++ Builder 各种版本:C++ Builder 4,5,6,2006;   

支持E语言各种版本。

时间: 2024-08-31 13:00:39

directui的相关文章

DirectUI介绍

最近由于项目的需要学习了一下DirectUI方面的东西,主要借鉴的是一个国外程序员写的代码(见引用一),看了后发现它更多的是探讨一种实现的可能性和思路,和实际应用还是有距离的,不过其实现还是很有意思的.在写此小结的时候又发现国内一个程序员将这个代码部分移植到WINCE下的代码(见引用二),因为平台的差异性要完全开发一个WINCE下的实际代码还是需要时间的.由于本人GUI开发做得少,工作中有关这方面的东西主要是提供思路和方法,学习DirectUI的主要目的是为了更新知识学习思路,文章中难免出现错误

visual studio-directUI怎么使用?(就常见的一些使用directui的程序)

问题描述 directUI怎么使用?(就常见的一些使用directui的程序) 如果用VS新建项目的话,是用win32项目还是MFC项目?目前常见的一些使用了directui的软件怎么建的? 解决方案 MFC和win32都可以,具体可以看看网上的DirectUI 界面库使用教程 解决方案二: directUI不是一种框架或者产品,它是一种实现机制的总称,所以谈不上用. 只要你的用户界面是自己画出来的,不是用的系统控件,都算directUI 解决方案三: 使用dulilib DirectUI库(一

框架-MFC 迁移到WPF or QT or DirectUI?

问题描述 MFC 迁移到WPF or QT or DirectUI? 公司有款软件,是用visual c++开发的,界面是用MFC实现的,现在想把UI部分重新开发 因为太普通太丑了,老板要炫酷一点,所以考虑用新的UI框架来实现,现考虑WPF,QT, DUI 但不知该选哪一种?各位大神帮忙推荐一下,最好能说下各个框架间的优缺点,不胜感激! 解决方案 QT 比较适合你.WPF是基于.net的,语言是C#,需要重新学习C#.QT 做界面比MFC优秀10年. 解决方案二: WPF, DirectUI接近

以 DirectUI 方式实现的ImageButton

[文章归类] C++,Windows 应用程序开发. 这是一篇比较简单的文章,主要讲解的是用 DirectUI 方式实现的对话框上的按钮.例如,QQ界面上的按钮.我在前一篇文章中讲解的 PS 油画滤镜的参数对话框中使用这种方式实现了放大缩小按钮.界面截图如下所示: 这种实现在早期我是直接写在窗口过程中的,这样的话是面向过程的方式,代码不容易移植复用.因此现在我在以前实现的基础上,把代码逻辑提取出来,放到一个类中,这样就会很方便在不同项目和场合使用.当然,由于窗口过程和考虑到代码效率的关系,实际上

DirectUI: Become windowless

A request on the Yahoo WTL newsgroup and a blog-article sparked some interest to look closer at creating a windowless user-interface. Traditionally, Windows applications are built upon the GDI/User windowing hierarchy, and thus restricted in several

python中窗口的消息处理

我们知道一个应用程序一般都不是只有一个窗口组成的,往往是多窗口组成的,比如一个对话框的窗口上有一个按钮,这里对话框是一个窗口,按钮也是一个窗口.如果一个对话框上有100个按钮,就是100个窗口,这样句柄会比较多.因而出现了DirectUI的设计方法,所有按钮和主窗口都是同一个窗口,采用分不同区域来绘画而成.这里就遇到了一个问题,每个窗口是独立存在的,但在前面的例子里,可以看到每个窗口都是调用PyWndProc函数来处理.意味着多个窗口的消息都抛给PyWndProc函数处理,这样处理起来只会越来越

Windows7 口令登录过程调试

基本原理 Windows7 以后 Winlogon 进程是动态的,有用户登录就会创建一个 Winlogon 进程,因此系统中完全 可能存在多个登录进程,注销后 Winlogon 进程也会随之结束. Windbg 断点 NtCreateUserProcess 观察 Windows7 启动流程: 我整理的基本进程树如下: smss.exe autochk.exe smss.exe 00000000 0000003c //session 0 Csrss.exe Wininit.exe Services

Win 7系统口令登录过程调试方法

首先介绍Windows 7系统基本原理 Windows7 以后 Winlogon 进程是动态的,有用户登录就会创建一个 Winlogon 进程,因此系统中完全 可能存在多个登录进程,注销后 Winlogon 进程也会随之结束. Windbg 断点 NtCreateUserProcess 观察 Windows7 启动流程: 我整理的基本进程树如下: smss.exe autochk.exe smss.exe 00000000 0000003c //session 0 Csrss.exe Winin

(转载)程序员整理的各种不错的工具

技术站点 Hacker News:非常棒的针对编程的链接聚合网站 Programming reddit:同上 MSDN:微软相关的官方技术集中地,主要是文档类 infoq:企业级应用,关注软件开发领域 OSChina:开源技术社区,开源方面做的不错哦 cnblogs,51cto,csdn:常见的技术社区,各有专长 stackoverflow:IT技术问答网站 GitHub:全球最大的源代码管理平台,很多知名开源项目都在上面,如Linux内核, OpenStack等免费的it电子书:http://