第一章duilib库简介

第一章duilib库简介

        duilib库是一款轻量级的C++界面开发库,遵循开源BSD协议,可以免费用于商业项目,由杭州月牙儿网络技术有限公司开发duilib库的源码下载地址:https://github.com/duilib/duilib 

        传统MFC界面库有如下问题

1)     不美观
2)     界面细节处理不好
3)     使用硬编码
4)     开发效率低下
5)     生成程序体积大
6)     MFC界面美化库使用HOOK技术,可能会导致系统不稳定或者引发其他错误

        duilib界面库基于GDI在窗口上自绘,无其他依赖,未使用特殊或危险的系统调用,能够很好的解决传统MFC界面的一系列问题。

        duilib界面库使用XML来描述界面风格,界面布局,将界面和逻辑分离,同时易于实现各种超炫的界面效果如换色,换肤,透明等

        duilib界面库完全兼容ActiveX控件(如常见的IE控件和Flash),也可以和MFC等界面库配合使用。

        duilib界面库可广泛用于互联网客户端、工具软件客户端、管理系统客户端、多媒体客户端(如KTV、触摸屏)、车载电脑系统、gps系统和手机客户端软件等。

 

技术特点

1)   界面与业务逻辑分离
2)   使用XML配置界面
3)   界面布局方式灵活多样
4)   内置常用的控件
5)   支持自定义控件
6)   强大的控件组合能力,复杂功能可通过简单控件组合完成
7)   强大的事件处理机制
8)   基于GDI和脏矩形的高效绘制技术
9)   支持多种资源方式,支持多种图片格式
10)  支持alpha混合,支持窗口透明
11)  强大的图片绘制描述方式
12)  类html字符串绘制技术
13)  支持动态变换色调
14)  支持动态切换资源位置方式换肤
15)  支持ansi和unicode,支持多国家语言
16)  支持插件系统
17)  内存占用小
18)  无第三方库依赖
19)  提供可见即所得的ui编辑器
20)  丰富易上手的demo例子
21)  可以非常容易和mfc、wtl结合使用

duilib库作品





  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: duilib是一款基于C++开发的UI界面,支持Windows操作系统。它提供了丰富的控件和样式,可以用于快速开发各种图形界面应用程序。 下面是一个简单的duilib的演示示例: #include "stdafx.h" #include "DuiLib/UIlib.h" using namespace DuiLib; int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { CPaintManagerUI::SetInstance(hInstance); CWndHostDemoWnd wnd; if(!wnd.Create(NULL, _T("DuiLib Demo"), UI_WNDSTYLE_DIALOG, 0L, 0, 0, 800, 600)) { return 0; } wnd.CenterWindow(); wnd.ShowWindow(true); CPaintManagerUI::MessageLoop(); return 0; } 以上代码是一个简单的程序入口函数,包含了duilib的初始化和创建一个对话框窗口的过程。其中CPaintManagerUI::SetInstance(hInstance);用于设置实例句柄,CWndHostDemoWnd是对话框窗口的自定义类;wnd.Create()用于创建窗口,参数依次为父窗口句柄、窗口名称、窗口样式、额外扩展样式、窗口的位置和大小;wnd.CenterWindow()用于将窗口居中显示;wnd.ShowWindow(true)将窗口显示出来;CPaintManagerUI::MessageLoop()是进入duilib的消息循环。 duilib的优点是使用方便,界面美观,扩展性强。它提供了丰富的控件和样式,能够满足不同应用场景的需求。通过duilib开发人员可以快速构建出直观、交互友好的图形界面应用程序。有很多开发者使用duilib开发各种类型的应用,例如电商平台、音乐播放器、管理系统等。使用duilib可以极大地提高开发效率,减少代码量,提升用户体验。 ### 回答2: Duilib是一个开源的C++ GUI,其主要用途是用于Windows平台下的桌面应用程序开发。下面是一个简单的Duilib的demo。 首先,需要包含头文件: ``` #include <duilib/UIlib.h> ``` 创建一个窗口类,继承自`WindowImplBase`: ``` class MyWindow : public WindowImplBase { public: virtual LPCTSTR GetWindowClassName() const { return _T("MyWindowClass"); } virtual CDuiString GetSkinFile() { return _T("mywindow.xml"); } virtual CDuiString GetSkinFolder() { return _T(""); } virtual void OnFinalMessage(HWND hWnd) { delete this; } virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { return __super::HandleMessage(uMsg, wParam, lParam); } virtual void InitWindow() { } virtual void Notify(TNotifyUI& msg) { } }; ``` 在应用程序的入口函数中创建窗口: ``` int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // 初始化Duilib CPaintManagerUI::SetInstance(hInstance); // 创建窗口 MyWindow* pWnd = new MyWindow(); if (pWnd == NULL) { return 0; } pWnd->Create(NULL, _T("MyWindowTitle"), UI_WNDSTYLE_FRAME, WS_EX_STATICEDGE); pWnd->CenterWindow(); pWnd->ShowWindow(); CPaintManagerUI::MessageLoop(); return 0; } ``` 在项目目录下创建一个名为`mywindow.xml`的XML文件,定义窗口的布局: ``` <?xml version="1.0" encoding="UTF-8"?> <Window> <Text pos="100, 100, 200, 200" text="Hello, World!" /> </Window> ``` 以上是一个使用Duilib创建一个简单的窗口的demo。通过继承`WindowImplBase`类来自定义窗口的行为,通过创建相应的XML布局文件来设计界面Duilib提供了丰富的UI控件和事件处理机制,可以让开发者轻松实现复杂的Windows应用程序。 ### 回答3: duilib是一款基于C++开发的跨平台UI,它能够帮助开发者快速地构建漂亮、流畅、易于维护的图形用户界面。下面是一个简单的duilib的示例demo。 ```cpp #include "stdafx.h" #include "UIlib.h" using namespace DuiLib; class CMyWindow : public CWindowWnd, public INotifyUI { public: CMyWindow() {} virtual LPCTSTR GetWindowClassName() const { return _T("DUIMainFrame"); } virtual void Notify(TNotifyUI& msg) { if (msg.sType == _T("click")) { if (msg.pSender->GetName() == _T("btnClick")) { wstring text = msg.pSender->GetText(); MessageBox(NULL, text.c_str(), _T("提示"), MB_OK); } } } virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lRes = 0; if (uMsg == WM_CREATE) { m_pm.Init(m_hWnd); CDialogBuilder builder; CContainerUI* pContainer = static_cast<CContainerUI*>(builder.Create(_T("duilib.xml"), NULL, NULL, &m_pm)); if(pContainer) { m_pm.AttachDialog(pContainer); m_pm.AddNotifier(this); } } else if (uMsg == WM_CLOSE) { ::PostQuitMessage(0); return lRes; } else if (uMsg == WM_DESTROY) { ::PostQuitMessage(0); return lRes; } if (m_pm.MessageHandler(uMsg, wParam, lParam, lRes)) return lRes; return CWindowWnd::HandleMessage(uMsg, wParam, lParam); } protected: CPaintManagerUI m_pm; }; int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { CPaintManagerUI::SetInstance(hInstance); CMyWindow myWindow; if (!myWindow.Create(NULL, _T("duilib demo"), UI_WNDSTYLE_DIALOG, 0L, 0, 0, 800, 600)) { return 0; } myWindow.CenterWindow(); myWindow.ShowWindow(true); CMessageLoop msgLoop; return msgLoop.Run(); } ``` 以上是一个简单的使用duilib的示例demo。它创建了一个窗口,加载了duilib.xml布局文件,并添加了一个按钮点击事件的响应处理函数。当点击按钮时,会弹出一个消息框显示按钮的文本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值