Duilib中各个类的简单介绍
DirectUI意为直接在父窗口上绘图(Paint on parent dc directly)。即子窗口不以窗口句柄的形式创建(windowless),只是逻辑上的窗口,绘制在父窗口之上。微软的“DirectUI”技术广泛的应用于Windows XP、Vista、Windows 7,如浏览器左侧的TaskPanel,控制面板导航界面,Media Player播放器,即时通讯工具MSN Messager等。
DirectUI好处在于可以很方便的构建高效、绚丽的、非常易于扩展的界面。国外如微软,国内如腾讯、百度等公司的客户端产品多采用这种方式来组织界面,从而很好的将界面和逻辑分离,同时易于实现各种超炫的界面效果如换色、换肤、透明等。
DirectUI可以理解为一个轻量级的WPF,可以让C++做出C#般绚丽的界面。目前国内做DirectUI皮肤库的公司主要有两家:第一家是UIPower(即Skin++的公司),网址www.uipower.com,其DirectUI产品网站www.directui.com,做的很专业;另一家是UIEASY,网址www.uieasy.com,一个轻量级皮肤库DSkinLite。但是,网上关于DirectUI的技术文章却很少;早在 6/26/2005,一个国外的程序员就已经写了一个开源的DirectUI例子,应该算是国内所有directui界面库的起源了,网址http://www.viksoe.dk/code/windowless1.htm,探讨一种实现的可能性和思路,和实际应用虽有一定距离,不过却是一个很好的学习资料。再后来,一个国内的程序员“当个傻瓜蛋”,基于此代码,进行重构和修正Bug,并放到了google上开源,网址http://code.google.com/p/duilib/,下载地址svn checkout http://duilib.googlecode.com/svn/trunk/ duilib-read-only。
本人通过学习这个duilib的源代码,学到了很多知识、思路和经验,分享给看到此文的朋友,共同探讨DirectUI技术,并欢迎大家加入到开发开源DirectUI皮肤库的行列当中。分析难免有误,见谅!
一、核心类
1. CWindowWnd,窗口对象管理父类,主要作用:
1) 创建窗口。
2) 窗口消息过程处理。
3) 提供窗口子类化与超类化接口。
2. CDialogBuilder,控件布局类,主要作用:
1) 读取XML脚本,分析脚本,构建控件树。
2) 创建控件对象。
3. CPaintManagerUI,窗口消息及图形绘制管理器类,与窗口绑定,主要作用:
1) 绘制控件。
2) 消息管理。
3) 事件通知。
4. INotifyUI,事件通知抽象类,主要作用:
1) 重载Notify虚函数,处理事件通知。
二、控件类
1. CControlUI,控件管理父类,主要作用:
1) 控件的通用基类,提供控件通用属性管理。
2. CLabelUI,静态标签类,父类CControlUI。
3. CButtonUI,按钮类,父类CLabelUI。
4. COptionUI,选择按钮类,父类CButtonUI。
5. CTextUI,静态文本类,父类CLabelUI。
6. CProgressUI,进度条类,父类CLabelUI。
7. CSliderUI,父类CProgressUI。
8. CEditUI,编辑框类,父类CLabelUI。
9. CListUI,列表框类,父类CVerticalLayoutUI、IListUI。
1) CListHeaderUI,父类CHorizontalLayoutUI。
2) CListHeaderItemUI,列表头类,父类CControlUI。
3) CListTextElementUI,类表文本类,父类CListLabelElementUI。
4) CListLabelElementUI,父类CListElementUI。
10. CComboUI,组合框类,父类CContainerUI、IListOwnerUI。
11. CActiveXUI,ActiveX控件类,父类CControlUI、 IMessageFilterUI。
12. CContainerUI,容器类,父类CControlUI、IContainerUI。
13. CTabLayoutUI,选项页布局类,父类CContainerUI。
14. CTileLayoutUI,父类CContainerUI。
15. CDialogLayoutUI,对话框布局类,父类CContainerUI。、
16. CVerticalLayoutUI,垂直布局类,父类CContainerUI。
17. CHorizontalLayoutUI,水平布局类,父类CContainerUI。
18. CListExpandElementUI,父类CListTextElementUI。
19. CListContainerElementUI,父类CContainerUI、IListItemUI。
三、辅助类
1. CStdPtrArray,指针数组。
2. CStdValArray,数据数组。
3. CStdString,字符串数组。
4. CStdStringPtrMap,字符串指针映射数组。
Duilib中各个类的简单介绍的更多相关文章
- VC中CRect类的简单介绍
CRect CRect类与Windows RECT结构相似,并且还包括操作CRect对象和Windows RECT结构的成员函数.在传递LPRECT,LPCRECT或RECT结构作为参数的任何地方,都 ...
- c++string类的简单介绍
#include "iostream" #include "string" using namespace std; /*@author:浅滩 *family: ...
- java中Color类的简单总结
java中Color类的简单总结 1.颜色的常识 任何颜色都是由三原色组成(RGB),JAVA中支持224为彩色,即红绿蓝分量取值 介于0-255之间(8位表示) 2.Color类中的常量 publi ...
- 浏览器中 F12 功能的简单介绍
chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首 ...
- [转]chrome浏览器中 F12 功能的简单介绍
本文转自:https://www.cnblogs.com/zhuzhubaoya/p/9758648.html chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己 ...
- 【F12】chrome浏览器中 F12 功能的简单介绍
chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首 ...
- chrome浏览器中 F12 功能的简单介绍
chrome浏览器中 F12 功能的简单介绍 由于F12是前端开发人员的利器,所以我自己也在不断摸索中,查看一些博客和资料后,自己总结了一下来帮助自己理解和记忆,也希望能帮到有需要的小伙伴,嘿嘿! 首 ...
- Java Web中web.xml文件简单介绍
参考博客: https://www.cnblogs.com/Y-oung/p/8401549.html 1.XML 声明和根元素 <?xml version="1.0" en ...
- 关于如何在其他包中写controller和简单介绍@SpringBootApplication
本文参考博客:https://blog.csdn.net/u013473691/article/details/52353923 关于@Configuration和@Bean参考博客:https:// ...
随机推荐
- 微信小程序のwxs
WXS(WeiXin Script)是小程序的一套脚本语言,结合 WXML,可以构建出页面的结构. wxs可以说就是为了满足能在页面中使用js存在的,在wxml页面中,只能在插值{{ }}中写简单的j ...
- Mysql优化-分区
分区简介 分区是根据一定的规则,数据库把一个表分解成多个更小的.更容易管理的部分.就访问数据库应用而言,逻辑上就只有一个表或者一个索引,但实际上这个表可能有N个物理分区对象组成,每个分区都是一个独立的 ...
- js中的Array数组清空
var data = new Array();//数组 data.length = 0;//数组的长度等于0,数组的项就会被清空
- Deb版本Linux配置Selenium+Chrome+Java实现自动化测试
1.安装chrome sudo apt-get install libxss1 libappindicator1 libindicator7 wget https://dl.google.com/li ...
- Vultr账号被锁定的几个常见原因
很多小伙伴使用都在问Vultr账号为什么又是会出现被锁定的情况,今天我们就来了解一下Vultr账号被锁定的几个常见原因. 1.Vultr主机违规使用 按照Vultr主机商的要求,我们的Vultr主机也 ...
- hadoop.io.native.NativeID$Windows.access0 报错问题解决
系统:win10 hadoop-2.6.0版本 java:1.8 版本32位 wordcount在本地运行时报错: Exception in thread "main" jav ...
- Sql Server 小知识不断扩充中
1. char.varchar.nvarchar 区别 char 定长字符数据长度8000字符,小于8000字符时以空格填充. varchar 变长字符数据最大长度8000,小于8000字符时不会以 ...
- 程序‘vim’已包含在下列软件包中
解决方法: 输入:sudo apt-get install ctags 输入:sudo apt-get install vim 输入:sudo ./config.sh (亲测有效)输入:vim tes ...
- 用jQuery基础
要使用jQuery要引用jQuery文件,在头标签中引用 1 <script src="jquery-1.11.2.min.js"></script> ...
- MaxCompute 表(Table)设计规范
表的限制项 表(Table)设计规范 表设计主要目标 表设计的影响 表设计步骤 表数据存储规范 按数据分层规范数据生命周期 按数据的变更和历史规范数据的保存 数据导入通道与表设计 分区设计与逻辑存储的 ...