在读这篇博客的时候,可能您已经对duilib有一定的了解。所以,我并不打算对duilib进行过多的介绍。它的内核首先由外国人编写,后来由国人一个小组接过来继续编写,于是就有了现在的Duilib。

1.下载Duilib

首先它托管在Google,后来不知道是不是由于大陆将 Google 全面封锁,将搜索引擎禁用了不算,还将技术网站都封闭了。所以,Duilib又托管到了 Github。所以在学习它之前,你需要学习如何利用Github,将Duilib下载到本地进行编译、运行。

1)首先下载 GitHub for Windows. https://windows.github.com/

2)注册一个帐号。

3)打开网站https://github.com/duilib/duilib

看到网站右边的按钮,如上图的红框处,点击”Clone in Desktop”按钮,保存到自己的帐号中,并能下载到本地中,保存到本地,主要是为了便于即时更新。当Duilib有更新时,你可以利用本地的Github工具进行更新。

4)打开本地的目录。

如上图右上角的红框操作。

2.编译DUILIB

DuiDesigner.sln 这个文件是 XML 编辑器。

DuiLib.sln 这个是DUILIB 源文件及Demo源文件。

使用VS2008进行编译。

3.Dui原理小解。

原来的WINDOWS界面,主要是要WND叠加组成,如:

每个WND都有自己的消息处理循环。这样不好的地方是,

1)绘制不方便。比如你要在一个Button上绘制一张半透明的背景图片,如果你使用了 MemDC,要处理透明绘制就会相当麻烦,甚至会有难以预测的BUG。

2)可以给病毒可趁之机。可以利用FindWindow查找Button的句柄,然后向它发送WM_LBUTTONDOWN和WM_LBUTTONUP消息,就可以实现单击的效果。以前旧版的QQ就存在这个BUG。现在已经很少有这个BUG了。

Dui一个Wnd它的上面没有多余的Wnd,所以的控件都是虚拟出来的,并不具备自己的消息循环,它们都用WND的消息循环。简单的描述如下图:

将消息传递到控件,主要就是通过 control_from_point 这样的一个函数,通过鼠标的座标点进行判断是哪个控件,并将由该控件进行响应鼠标消息。

Duilib 的简单介绍就到这里了。

在学习一个东西的时候,我并不倾向于一开始就学习内核、源码。我觉得首先应该学习如何何用它,当你会用它了,去理解它的内核代码才会顺畅,也才看得明白。

所以,下一节将介绍 UIDesigner 的使用。

Duilib教程-简单介绍相关推荐

  1. linux apktool使用教程,简单介绍ubuntu下apktool的使用与配置

    apktool 使用 1.解包(反编译):apktool d -f xxx.apk -o xxx 2.二次打包: apktool b xxx -o xxx.apk 3.签名 java -jar sig ...

  2. matlab整型和浮点的区别,技术帖 | 心理学MATLAB初学者教程--简单数据类型介绍(逻辑型数据,整型/浮点型数据,字符型)......

    1.2.1 什么是变量和变量名 变量这个词似乎在许多地方都有出现,在计算机中变量是指是一段有名字的连续存储空间(摘自百度百科),而这个所谓的名字就叫做变量名.举个例子说现在我们再MATLAB的命令窗口 ...

  3. 求介绍matlab函数用法的书,MATLAB初学者教程--函数用法的简单介绍

    1.4 函数用法的简单介绍 1.4.1什么是函数 似乎很多人一听到函数这个词就会想到数学中的某个概念,然后对于恐惧数学的同学就开始打退堂鼓.在matlab当中到处可以用到函数,它的出现可以让我们用很简 ...

  4. linux加protobuf变量环境,protobuf简单介绍和ubuntu 16.04环境下安装教程

    protobuf简单介绍 protobuf是谷歌的开源序列化协议框架,结构类似于XML,JSON这种,显著的特点是二进制的,效率高,主要用于通信协议和数据存储等方面,算是一种结构化数据的表示方法. p ...

  5. WPF真入门教程23--MVVM简单介绍

    在WPF开发中,经典的编程模式是MVVM,是为WPF量身定做的模式,该模式充分利用了WPF的数据绑定机制,最大限度地降低了Xmal文件和CS文件的耦合度,也就是UI显示和逻辑代码的耦合度,如需要更换界 ...

  6. WML教程2:简单介绍关于WML文件的概念WML Decks

    WML教程2:简单介绍关于WML文件的概念WML Decks 这里简单介绍一个关于WML文件的概念,其他的细节问题会在后面的章节还详细介绍. 声明 由于WML语言继承于XML,所以一个有效的WML文档 ...

  7. Linux系统Vi/Vim编辑器的简单介绍、安装/卸载、常用命令

    Linux系统Vi/Vim编辑器的简单介绍.安装/卸载.常用命令 1.介绍 vi(Visual Interface)编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界 ...

  8. python3菜鸟教程中文-Python3菜鸟教程 1.介绍

    对简明Python3教程 1.介绍感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! Python是少有的几种既强大又简单的编程语言.你将惊喜地发现通过使用Python即可轻松 ...

  9. ASP.NET Core macOS 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程

    ASP.NET Core macOS 环境配置 - ASP.NET Core 基础教程 - 简单教程,简单编程 原文:ASP.NET Core macOS 环境配置 - ASP.NET Core 基础 ...

最新文章

  1. Java 线程同步 synchronized
  2. PaperNotes(7)-GANs模式坍塌/训练不稳定
  3. C和C++混合编程(__cplusplus使用)
  4. Python3.5.2官方文档学习备忘录
  5. Python对文本文件的简单操作(一)
  6. idea 调节背景护眼_IDEA 护眼色设置 背景行颜色取消等设置
  7. CSS Sprite雪碧图应用
  8. Ubuntu 可视化图片——eog
  9. MIP(Mobile instant pages 移动网页加速器)
  10. LVM 扩容---LVM扩展系统的根分区
  11. 电商搜索里都有啥?详解闲鱼搜索系统(长文)
  12. 【论文学习】Multi-modal Knowledge Graphs for Recommender Systems
  13. wjw的剪纸(DFS)
  14. Linux/Android——input_handler之evdev (四)
  15. 对技术的态度(酷壳)
  16. 十年磨一剑 | 《腾讯大数据构建之道》正式出版
  17. 建立 Gtalk 群聊的多种方法
  18. [ZUCC 英语周测]Quiz B-3-8
  19. 计算机一级RGB怎么弄,用时半个月,我终于也有了属于自己的RGB电脑平台
  20. 【网络】https协议

热门文章

  1. 微信支付 - 支付中心回调通知
  2. HashSet集合介绍
  3. JasperReport:概述
  4. 微服务发现组件Eureka:微服务注册
  5. 数据库设计:pd工程创建数据库表
  6. 静态static的内存图
  7. Cortex‐M3-总线接口
  8. View 绘制流程分析
  9. 关于My Sql update语句不能用子查询的解决办法
  10. 配置Hyper-V Server 资源计量