Duilib教程-简单介绍
在读这篇博客的时候,可能您已经对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教程-简单介绍的更多相关文章
- Kafka使用入门教程 简单介绍
介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: Kafka将消息以 ...
- ActiveMQ基础教程----简单介绍与基础使用
概述 ActiveMQ是由Apache出品的,一款最流行的,能力强劲的开源消息总线.ActiveMQ是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,它非常快速,支持多 ...
- AudioToolKit的简单介绍及教程
AudioToolKit的简单介绍及教程 (2013-02-21 09:29:18) 转载▼ 标签: 游戏开发 unity3d教程 unity3d unity it 分类: Unity3d之插件篇 原 ...
- [转帖]MyCat教程【简单介绍】
MyCat教程[简单介绍] 2019-10-15 10:27:23 波波烤鸭 阅读数 618 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. ...
- SQLite数据库和JPA简单介绍
SQLite数据库和JPA简单介绍 一.SQLite简单使用 SQLite是遵循ACID的关系数据库管理系统,它的处理速度很快,它的设计目标是嵌入式的,只需要几百K的内存就可以了. 1.下载SQLit ...
- Android发展简单介绍
Android一词的本义指“机器人”,同一时候也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统.中间件.用户界面和应用软件组成,号称是首个为移动 ...
- OpenCV 编程简单介绍(矩阵/图像/视频的基本读写操作)
PS. 因为csdn博客文章长度有限制,本文有部分内容被截掉了.在OpenCV中文站点的wiki上有可读性更好.而且是完整的版本号,欢迎浏览. OpenCV Wiki :<OpenCV 编程简单 ...
- 【浅墨著作】《OpenCV3编程入门》内容简单介绍&勘误&配套源码下载
经过近一年的沉淀和总结,<OpenCV3编程入门>一书最终和大家见面了. 近期有为数不少的小伙伴们发邮件给浅墨建议最好在博客里面贴出这本书的文件夹,方便大家更好的了解这本书的内容.事实上近 ...
- BST&AVL&红黑树简单介绍
(BST&AVL&红黑树简单介绍) 前言: 节主要是给出BST,AVL和红黑树的C++代码,方便自己以后的查阅,其代码依旧是data structures and algorithm ...
随机推荐
- 【leetcode】Reorder List (python)
问题的思路是这样: 循环取头部合并,事实上也能够换个角度来看,就是将后面的链表结点,一次隔空插入到第一部分的链表中. class Solution: # @param head, a ListNode ...
- C++11: reference_wrapper
https://oopscenities.net/2012/08/09/reference_wrapper/ Look at this piece of code: 1 2 3 4 5 6 7 8 9 ...
- IBATIS+ORACLE(一)
迁移时间:2017年6月1日15:55:17 Author:Marydon (四)IBATIS + ORACLE 第一部分:基础篇 1.4.1.1 分页SQL <!-- 开头 --> ...
- iOS多线程的初步研究(一)-- NSThread
对于多线程的开发,iOS系统提供了多种不同的接口,先谈谈iOS多线程最基础方面的使用.产生线程的方式姑且分两类,一类是显式调用,另一类是隐式调用. 一.显示调用的类为NSThread.一般构造NSTh ...
- 我眼中的PageRank算法详解
随着互联网的发展,网络上已有的网页数量庞大,并且每天都会有很多网页发布,如何权衡这些重要度的排名是一个很重要的问题.我们今天就来了解一下PageRank算法. 首先我们要来了解一下图的概念,请看图1. ...
- iOS触摸事件哦
主要是记录下iOS的界面触摸事件处理机制,然后用一个实例来说明下应用场景. 一.处理机制 界面响应消息机制分两块,(1)首先在视图的层次结构里找到能响应消息的那个视图.(2)然后在找到的视图里处理消息 ...
- Error: Could not find or load main class org.apache.flume.tools.GetJavaProperty
问题: [root@master conf]# flume-ng version Error: Could not find or load main class org.apache.flume.t ...
- 【大话QT之十三】系统软件自己主动部署实现方案
本篇文章是对[大话QT之十二]基于CTK Plugin Framework的插件版本号动态升级文章的补充,在上篇文章中我们阐述的重点是新版本号的插件已经下载到plugins文件夹后应该怎样更新本地正在 ...
- apue编程之getopt ,getopt_long使用方法以及实例
1.getopt 1.1 函数定义 int getopt(int argc, char * const argv[], const char *optstring);#include <unis ...
- struts解决form提交的中文参数乱码问题
根据struts的工作原理,原文摘自<Java Web 开发实战经典> 在运行一个JSP页面前,会调用指定的ActionForm中的reset()方法,进行表单元素的初始化 因此,在相应的 ...