在读这篇博客的时候,可能您已经对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. Kafka使用入门教程 简单介绍

    介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢?   首先让我们看几个基本的消息系统术语: Kafka将消息以 ...

  2. ActiveMQ基础教程----简单介绍与基础使用

    概述 ActiveMQ是由Apache出品的,一款最流行的,能力强劲的开源消息总线.ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,它非常快速,支持多 ...

  3. AudioToolKit的简单介绍及教程

    AudioToolKit的简单介绍及教程 (2013-02-21 09:29:18) 转载▼ 标签: 游戏开发 unity3d教程 unity3d unity it 分类: Unity3d之插件篇 原 ...

  4. [转帖]MyCat教程【简单介绍】

    MyCat教程[简单介绍] 2019-10-15 10:27:23 波波烤鸭 阅读数 618 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. ...

  5. SQLite数据库和JPA简单介绍

    SQLite数据库和JPA简单介绍 一.SQLite简单使用 SQLite是遵循ACID的关系数据库管理系统,它的处理速度很快,它的设计目标是嵌入式的,只需要几百K的内存就可以了. 1.下载SQLit ...

  6. Android发展简单介绍

    Android一词的本义指“机器人”,同一时候也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成,号称是首个为移动 ...

  7. OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)

    PS. 因为csdn博客文章长度有限制,本文有部分内容被截掉了.在OpenCV中文站点的wiki上有可读性更好.而且是完整的版本号,欢迎浏览. OpenCV Wiki :<OpenCV 编程简单 ...

  8. 【浅墨著作】《OpenCV3编程入门》内容简单介绍&amp;勘误&amp;配套源码下载

    经过近一年的沉淀和总结,<OpenCV3编程入门>一书最终和大家见面了. 近期有为数不少的小伙伴们发邮件给浅墨建议最好在博客里面贴出这本书的文件夹,方便大家更好的了解这本书的内容.事实上近 ...

  9. BST&AVL&红黑树简单介绍

    (BST&AVL&红黑树简单介绍) 前言: 节主要是给出BST,AVL和红黑树的C++代码,方便自己以后的查阅,其代码依旧是data structures and algorithm ...

随机推荐

  1. 基于Nginx实现一个自己的HTTP模块

    /usr/local/nginx/conf/nginx.conf文件例如以下: #worker工作进程的用户及用户组 user weijl; #Nginx worker进程个数 worker_proc ...

  2. 【DB2】不同编码格式下的汉字所占字节

    UTF-8 (8-bit Unicode Transformation Format) 是一种针对Unicode的可变长度字符编码,又称万国码,它包含全世界所有国家需要用到的字符,是国际编码,通用性强 ...

  3. Drupal启动阶段之四:系统变量

    Drupal的系统变量是指保存在后台数据库variable表中的一些参数设置,透过variable_get()和variable_set()存取: 先看一看_drupal_bootstrap_vari ...

  4. 解决windows server2003 64位操作系统上不能加载32位应用程序dll 的问题

    [FileLoadException: Could not load file or assembly 'sapnco_utils, Version=3.0.0.42, Culture=neutral ...

  5. 以登录实例简单介绍Servlet使用

    1.简单介绍 Java Servlet 是执行在 Web server或应用server上的程序,使用 Servlet.您能够收集来自网页表单的用户输入.呈现来自数据库或者其它源的记录.还能够动态创建 ...

  6. 远程调试 Weinre

    什么是远程调试? 说白了,就是可以通过PC端[F12开发者工具]查看并调试移动端的页面内容,如html.css.js.Network资源等. 重要的事情说三遍:weinre所占有的端口不需要和监听页面 ...

  7. C语言 文件操作

    /** *@author cody *@date 2014-08-09 *@description copy text file * FILE *fopen(filename,openmode) * ...

  8. hbase能否代替mysql

    代志远早年就职网易研究院从事MapReduce与DFS系统的自主研发,后增加支付宝数据平台负责Hadoop与HBase体系的架构设计与二次研发,支付宝流计算与分布式搜索系统的设计和研发,后成为支付宝海 ...

  9. 40. Implement Queue by Two Stacks【medium】

    As the title described, you should only use two stacks to implement a queue's actions. The queue sho ...

  10. lantin1

    Latin1是ISO-8859-1的别名,有些环境下写作Latin-1. ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCI ...