2021 Duilib最新入门教程(一)Duilib简介
目录
- Duilib解决什么问题?
- 方案一、自己画界面
- 方案二、使用标准控件
- 方案三、使用Duilib框架
- Duilib是什么?
- 先看下[Duilib官方简介](https://github.com/duilib/duilib/blob/master/README.md)
- 再看下[DirectUI 百度百科](https://baike.baidu.com/item/directui)
比起介绍“ Duilib是什么?”,更重要的应该是了解“ Duilib解决什么问题?”
Duilib解决什么问题?
先聊聊一个话题:怎样做一个有界面的软件?
方案一、自己画界面
最原始的办法是自己绘制界面的所有点线面。
操作系统提供了绘制的接口(Windows API):GDI。
GDI(Graphics Device Interface图形设备接口)提供以下功能:
绘制一个像素点:SetPixel()。
绘制直线:MoveTo(),LineTo()。
绘制多个首尾相连的线:Polyline()。
绘制矩形:FrameRect(),Rectangle()。
优点是可以自由设计界面长什么样,缺点就是太麻烦了,要控制所有细节。
方案二、使用标准控件
Windows对GDI进行进一步封装,提供了多种标准控件,比如:按钮、编辑框这些。
优点是写界面只是把多个控件组合起来,缺点这些控件是固定的,比较难调整。
方案三、使用Duilib框架
使用GDI:灵活但不方便;
使用标准控件:方便但不灵活;
想要灵活又方便,就需要结合两者的优势。
Duilib也对GDI进行了封装,提供基本的控件(按钮、编辑框等),方便使用。
但和Windows的标准控件不一样,Duilib提供的控件有多个参数可以灵活调整。
综上所述,Duilib要解决的问题就是:怎样方便又灵活地编写一个小而美的界面软件?
Duilib是什么?
先看下Duilib官方简介
再看下DirectUI 百度百科
DirectUI意为直接在父窗口上绘图(Paint on parent dc directly)。即子窗口不以窗口句柄 的形式创建(windowless),只是逻辑上的窗口,绘制在父窗口之上。
简单来说,Duilib是一个自绘控件的界面库,使用Duilib可以开发小而美的界面软件。
用Duilib写一个界面软件,只需要用一个xml文件描述界面长什么样,然后在代码中写上操作界面之后怎么处理就可以了。这里摘取一下关键的代码:
// 界面上显示一个按钮 按钮名字为btn
<Button name="btn" text="按钮" />
// 点击按钮对应的处理函数
if (msg.sType == _T("click")) // 判断是不是点击事件
{if (msg.pSender->GetName() == _T("btn"));// 判断是不是 btn 按钮{::MessageBox(NULL, _T("我是按钮"), _T("点击了按钮"), NULL);}
}
Duilib技术交流群:799142530
源码地址:https://github.com/KongKong20/DuilibTutor
2021 Duilib最新入门教程(一)Duilib简介相关推荐
- [转]【Unity3D入门教程】Unity3D简介、安装和程序发布
<Unity3D入门教程>会带领零基础的初学者,一步步学会使用Unity3D来开发简单的应用程序,走近游戏开发的世界.本系列教程虽然不会面面俱到地深入到全部的知识点,但是会涉及到所有入门阶 ...
- 【Protocol Buffer】Protocol Buffer入门教程(一):简介和安装
00. 目录 文章目录 00. 目录 01. Protocol Buffer简介 02. Protocol Buffer优缺点 03. Protocol Buffer安装 04. Protocol B ...
- 3.9 Docker最新入门教程-Docker入门-构建镜像最佳实践
3.9 构建镜像最佳实践 安全扫描 构建镜像后,最好使用docker scan命令扫描它以查找安全漏洞.Docker 与Snyk合作提供漏洞扫描服务. 笔记 您必须登录到 Docker Hub 才能扫 ...
- protobuf入门教程(一):简介和安装
1.1 简介 1.1.1 什么是protobuf protobuf也叫protocol buffer是google 的一种数据交换的格式,它独立于语言,独立于平台.google 提供了多种语言的实现: ...
- odoo 开发入门教程系列-安全-简介
安全-简介 前一章中我们已经创建了第一个打算用于存储业务数据的表.在odoo这样的一个商业应用中,第一个考虑的问题就是谁(Odoo 用户(或者组用户))可以访问数据.odoo为指定用户组用户提供了一个 ...
- 3.8 Docker最新入门教程-Docker入门-使用 Docker Compose
3.8 使用 Docker Compose Docker Compose是一种旨在帮助定义和共享多容器应用程序的工具.使用 Compose,我们可以创建一个 YAML 文件来定义服务,并使用一个命令, ...
- Kali 2021.2 最新安装教程 图文详解(保姆式)
0x00 前言 Kali Linux 新版本(2021.2)增加大量新工具和功能,感兴趣的小伙伴可以到kali官网查看相关介绍. 新版采用Xfce 4.16桌面环境,附上帅照! 0x01 安装环境 宿 ...
- 3.7 Docker最新入门教程-Docker入门-多容器应用
3.7 多容器应用 到目前为止,我们一直在使用单容器应用程序.但是,我们现在想要将 MySQL 添加到应用程序堆栈中.经常会出现以下问题--"MySQL 将运行在哪里?安装在同一个容器中还是 ...
- 3.4 Docker最新入门教程-Docker入门-共享应用程序
3.4 共享应用程序 现在我们已经构建了一个镜像,让我们分享它吧!要共享 Docker 镜像,您必须使用 Docker存储库.默认存储库是 Docker Hub,我们使用的所有镜像都来自这里. Doc ...
- 3.1 Docker最新入门教程-Docker入门-概述
3.1 概述 欢迎!我们很高兴您想学习 Docker. 本指南包含有关如何开始使用 Docker 的分步说明.您将在本指南中学到和做的一些事情是: 构建并运行镜像作为容器 使用 Docker Hub ...
最新文章
- QIIME 2教程. 14数据评估和质控q2-quality-control(2020.11)
- WCF - 基础介绍
- C# 使用 Windows API 操作控件: SendMessage
- 2152:聪聪可可(点分治)
- mysql ---- DQL(单表查询)
- microsoft账户登录一直加载_LoL手游登录常见问题答疑
- Qt网络编程、tcp通信、文件传输、程序打包和图标设置(QT五)
- 中科院SCI分区和JCR分区
- java 异或代码编程
- 基于Spring+SpringMVC+Mybatis开发房屋租赁系统
- 清华大学计算机系黄子懿,清华大学2014年自主招生名单:(北京市)(一)
- CVPR 2022|解耦知识蒸馏!旷视提出DKD:让Hinton在7年前提出的方法重回SOTA行列!...
- stm32f4晶振管理
- 【项目实战】IPC摄像头在线状态ping检测与告警邮件发送项目总结
- ubuntu删除超级大的文件解决方法(实测)
- Xneomai 简介
- ISA, x86,x86_64, AMD64, 指令集等名词解析
- 2022年全国职业院校技能大赛(高职组)
- MySQL图形化用户界面客户端的安装与介绍(SQLyog)
- 微信小程序学习day01-WXML 模板语法
热门文章
- 128G SSD固态卡死,主控SM2258xt,颗粒PFG29-6量产开卡教程+软件
- tensorflow或运算 tf.logical_or tf.math.logical_or
- 矩阵分解 三角分解(LU分解)
- 基于Python的直方图匹配
- Blocking Queue三种加入队列方法对比
- 单片机数码管万年历c语言,基于51单片机和数码管的万年历程序
- RS485接口与RJ45接口的区别与通讯限制
- ReportMachine 3.0技巧
- 《2021企业数智化转型升级服务全景图/产业图谱1.0版》重磅发布
- PyQt5--google快捷翻译