首页 > 其他分享 >《DuiLib篇》DuiLib是什么

《DuiLib篇》DuiLib是什么

时间:2023-07-27 13:56:32浏览次数:46  
标签:DuiLib 界面 控件 Duilib 什么 按钮 GDI

DuiLib是什么

参考链接:https://baike.baidu.com/item/duilib/9362672?fr=ge_ala
参考链接:https://www.cnblogs.com/wwgk/p/14314187.html

百科词条

DuiLib是国内首个开源 的directui 界面库,开放,共享,惠众,共赢,遵循bsd协议,可以免费用于商业项目,目前支持Windows 32 、Window CE、Mobile等平台。

Duilib界面库的出现解决了使用传统MFC界面库开发软件不美观、界面细节处理不好、使用硬编码、开发效率低下、生成程序体积大等问题。而且传统MFC界面美化库大都使用HOOK等对系统影响比较大的技术,可能会导致系统不稳定或者引发其他错误。而Duilib界面库完全基于GDI在窗口上自绘,无其他依赖,未使用特殊或危险的系统调用,能够很好的解决传统MFC界面的一系列问题。

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,界面,控件,Duilib,什么,按钮,GDI
From: https://www.cnblogs.com/fusio/p/17584723.html

相关文章

  • 什么是一元函数
    提问什么是一元函数回答一个参数的函数延申使用out、ref输出参数是一种让人困惑的选择使用标识参数是让人害人听闻的做法,应该拆分为两个函数,直到用户输入层面参考......
  • pnpm 是凭什么对 npm 和 yarn 降维打击的
    大家最近是不是经常听到pnpm,我也一样。今天研究了一下它的机制,确实厉害,对yarn和npm可以说是降维打击。那具体好在哪里呢?我们一起来看一下。那具体好在哪里呢?我们一起来看一下。我们按照包管理工具的发展历史,从npm2开始讲起:npm2用node版本管理工具把node版本降......
  • 分布式事务两阶段提交和三阶段提交有什么区别?
    在分布式事务中,通常使用两阶段协议或三阶段协议来保障分布式事务的正常运行,它也是X/Open公司定义的一套分布式事务标准。X/Open公司是由多家国际计算机厂商所组成的联盟组织,它建立之初是为了向UNIX环境提供标准。分布式事务是指在分布式系统中,多个节点之间进行的事务操作......
  • 为什么直流分量导致归一化频谱变小?
    直接举一个例子。假设有一个包含N个样本的信号,表示\(x[n]\),其中\(n=0,1,2,...,N-1\)。信号的DFT表示\(X[k]\),其中\(k=0,1,2,...,N-1\),对应信号在不同频率上的分量,DFT的计算公式如下:\[X[k]=\sum\nolimits_{n=0}^Nx[n]\cdote^{-j(2\pi/N)\cdotk\cdotn}......
  • 中国超级计算机为什么不能为AI提供算力?
    网上看到这样的帖子:https://www.zhihu.com/question/609008408/answer/3130831897     ==========================================================  我个人搞了十多年的计算机,其中大部分时间都是搞AI相关,10多年前的时候就学过cuda编写bp模型,可以说算得上国内......
  • 为什么程序员却不是工作经验越久越吃香?
    越老越吃香的行业有一个特性,就是之前的工作对于现在的工作还有用。一说起这种工作,你的第一反应是不是老师、医生、律师之类的岗位。而不会是程序员,毕竟程序员的35岁危机还是“家喻户晓”的。那为什么会出现这样的状况呢?对应用型程序员来讲,确实存在年龄越大越不值钱的现象。以我的经......
  • HashMap非线程安全到底有什么问题
    HashMap是Java中常用的数据结构,用于存储键值对,并且提供了快速的查找和插入操作。下面挖掘一下HashMap内部的架构设计思维:哈希函数的设计:HashMap使用哈希函数将键映射到数组索引上。好的哈希函数应该尽量减少哈希冲突,使得键能够均匀地分布在数组中,从而提高查找效率。Java中的Hash......
  • 大家都不买房,可能对经济产生什么影响?
    网上看到了这个帖子:https://www.zhihu.com/question/607452791/answer/3121400400    ==========================================......
  • PHPDOM中的children方法是什么
    PHPDOM中的children方法是什么在PHP开发中,PHPDOM是一个非常常用的类库,该类库是基于DOM模型的PHP扩展,主要用于处理XML和HTML文档。而其中的children方法是一种非常重要的函数,用于获取某个元素的所有子元素。PHPDOM中的children方法是什么在使用children方法时,我们需要传递一个CS......
  • PHPJWS签名: 什么是JWS签名如何在PHP中实现JWS签名
    PHPJWS签名:什么是JWS签名如何在PHP中实现JWS签名在现代网络应用程序中,安全性是至关重要的。为了保证数据的安全,我们需要使用各种方法来加密和验证数据。JWS(JSONWebSignature)就是这样一种方法,它使用JSON格式来加密和验证数据。JWS是一种使用JSON格式的数据结构,它包含了......