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