目录

  • 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官方简介

  Duilib是一个Windows下免费开源的DirectUI界面库,由于简约易扩展的设计以及稳定高效的实现被各大互联网公司普遍接受,广泛应用于包括IM、视频客户端、股票行情软件、导航软件、手机辅助软件、安全软件等多个行业的众多pc客户端软件。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简介相关推荐

  1. [转]【Unity3D入门教程】Unity3D简介、安装和程序发布

    <Unity3D入门教程>会带领零基础的初学者,一步步学会使用Unity3D来开发简单的应用程序,走近游戏开发的世界.本系列教程虽然不会面面俱到地深入到全部的知识点,但是会涉及到所有入门阶 ...

  2. 【Protocol Buffer】Protocol Buffer入门教程(一):简介和安装

    00. 目录 文章目录 00. 目录 01. Protocol Buffer简介 02. Protocol Buffer优缺点 03. Protocol Buffer安装 04. Protocol B ...

  3. 3.9 Docker最新入门教程-Docker入门-构建镜像最佳实践

    3.9 构建镜像最佳实践 安全扫描 构建镜像后,最好使用docker scan命令扫描它以查找安全漏洞.Docker 与Snyk合作提供漏洞扫描服务. 笔记 您必须登录到 Docker Hub 才能扫 ...

  4. protobuf入门教程(一):简介和安装

    1.1 简介 1.1.1 什么是protobuf protobuf也叫protocol buffer是google 的一种数据交换的格式,它独立于语言,独立于平台.google 提供了多种语言的实现: ...

  5. odoo 开发入门教程系列-安全-简介

    安全-简介 前一章中我们已经创建了第一个打算用于存储业务数据的表.在odoo这样的一个商业应用中,第一个考虑的问题就是谁(Odoo 用户(或者组用户))可以访问数据.odoo为指定用户组用户提供了一个 ...

  6. 3.8 Docker最新入门教程-Docker入门-使用 Docker Compose

    3.8 使用 Docker Compose Docker Compose是一种旨在帮助定义和共享多容器应用程序的工具.使用 Compose,我们可以创建一个 YAML 文件来定义服务,并使用一个命令, ...

  7. Kali 2021.2 最新安装教程 图文详解(保姆式)

    0x00 前言 Kali Linux 新版本(2021.2)增加大量新工具和功能,感兴趣的小伙伴可以到kali官网查看相关介绍. 新版采用Xfce 4.16桌面环境,附上帅照! 0x01 安装环境 宿 ...

  8. 3.7 Docker最新入门教程-Docker入门-多容器应用

    3.7 多容器应用 到目前为止,我们一直在使用单容器应用程序.但是,我们现在想要将 MySQL 添加到应用程序堆栈中.经常会出现以下问题--"MySQL 将运行在哪里?安装在同一个容器中还是 ...

  9. 3.4 Docker最新入门教程-Docker入门-共享应用程序

    3.4 共享应用程序 现在我们已经构建了一个镜像,让我们分享它吧!要共享 Docker 镜像,您必须使用 Docker存储库.默认存储库是 Docker Hub,我们使用的所有镜像都来自这里. Doc ...

  10. 3.1 Docker最新入门教程-Docker入门-概述

    3.1 概述 欢迎!我们很高兴您想学习 Docker. 本指南包含有关如何开始使用 Docker 的分步说明.您将在本指南中学到和做的一些事情是: 构建并运行镜像作为容器 使用 Docker Hub ...

最新文章

  1. QIIME 2教程. 14数据评估和质控q2-quality-control(2020.11)
  2. WCF - 基础介绍
  3. C# 使用 Windows API 操作控件: SendMessage
  4. 2152:聪聪可可(点分治)
  5. mysql ---- DQL(单表查询)
  6. microsoft账户登录一直加载_LoL手游登录常见问题答疑
  7. Qt网络编程、tcp通信、文件传输、程序打包和图标设置(QT五)
  8. 中科院SCI分区和JCR分区
  9. java 异或代码编程
  10. 基于Spring+SpringMVC+Mybatis开发房屋租赁系统
  11. 清华大学计算机系黄子懿,清华大学2014年自主招生名单:(北京市)(一)
  12. CVPR 2022|解耦知识蒸馏!旷视提出DKD:让Hinton在7年前提出的方法重回SOTA行列!...
  13. stm32f4晶振管理
  14. 【项目实战】IPC摄像头在线状态ping检测与告警邮件发送项目总结
  15. ubuntu删除超级大的文件解决方法(实测)
  16. Xneomai 简介
  17. ISA, x86,x86_64, AMD64, 指令集等名词解析
  18. 2022年全国职业院校技能大赛(高职组)
  19. MySQL图形化用户界面客户端的安装与介绍(SQLyog)
  20. 微信小程序学习day01-WXML 模板语法

热门文章

  1. 128G SSD固态卡死,主控SM2258xt,颗粒PFG29-6量产开卡教程+软件
  2. tensorflow或运算 tf.logical_or tf.math.logical_or
  3. 矩阵分解 三角分解(LU分解)
  4. 基于Python的直方图匹配
  5. Blocking Queue三种加入队列方法对比
  6. 单片机数码管万年历c语言,基于51单片机和数码管的万年历程序
  7. RS485接口与RJ45接口的区别与通讯限制
  8. ReportMachine 3.0技巧
  9. 《2021企业数智化转型升级服务全景图/产业图谱1.0版》重磅发布
  10. PyQt5--google快捷翻译