当前位置: 首页 > news >正文

Duilib_CEF桌面软件实战之Duilib编译与第一个界面程序

Duilib介绍

Duilib是windows平台下的一款轻量级directUI开源库(遵循BSD协议),完全免费,可用于商业软件开发,只需在软件包里附上协议文件即可。Duilib可以简单方便地实现大多数界面需求,包括换肤、换色,透明等功能,支持多种图片格式,使用XML可以方便地定制窗口,能较好地做到UI和逻辑相分离,尽量减少在代码里创建UI控件。目前官方Duilib已经停止维护了,但还是有很多旁系分支在努力维护者,咱们使用的是Troy 大佬维护的版本:下载地址

Duilib编译

因为CEF是用VS2022编译的,所以Duilb也需要这个版本的编译器编译(DLL需要编译成MTD)

Duilib调用

首先创建一个新的windows桌面应用程序:

取好项目名,因为我们需要把duilib的头文件添加到项目里面,为了方便我们直接把duilib整个项目都拷贝到新项目的文件夹中。

然后右键解决方案,添加-->现有项目-->选择解决方案路径-->DuiLib.vcxproj

然后在生产的项目把duilib头文件Include进去,比如我在framework.h这个文件中,你也可以在自己项目的预编译头文件写。

然后把项目入口文件除了main函数其余的都删除掉。我们不需要微软自己创建得窗口。

好了,准备工作都做好了,开始添加主界面类吧。

名字自取哦。我添加的名字:CFrameWnd.h与CFrameWnd.cpp(以后所有讲解我就直接以我创建的文件名命名了)。

在CFrameWnd.h头文件中CFrameWnd继承duilib中的WindowImplBase类。

#include"framework.h"
class CFrameWnd :  public WindowImplBase
{public:explicit CFrameWnd(LPCTSTR pszXMLPath) : strXMLPath(pszXMLPath) {};explicit CFrameWnd() {};~CFrameWnd() {};virtual LPCTSTR		GetWindowClassName() const { return _T("QingFengFrame"); }virtual CDuiString	GetSkinFile() { return strXMLPath; }virtual CDuiString	GetSkinFolder() { return _T(""); }void InitWindow();
private:CDuiString strXMLPath;
};

GetWindowClassName:是设置窗口类名

GetSkinFile:就是xml路径名

GetSkinFolder:需要返回 皮肤XML 所在的文件夹

InitWindow:是我们自己写的函数,目前是空函数。

然后在main函数写入我们需要创建的窗口代码:

#include "framework.h"
#include "duilib_cef.h"
#include"CFrameWnd.h"int APIENTRY wWinMain(_In_ HINSTANCE hInstance,_In_opt_ HINSTANCE hPrevInstance,_In_ LPWSTR    lpCmdLine,_In_ int       nCmdShow)
{UNREFERENCED_PARAMETER(hPrevInstance);UNREFERENCED_PARAMETER(lpCmdLine);CPaintManagerUI::SetInstance(hInstance);CPaintManagerUI::SetResourcePath(CPaintManagerUI::GetInstancePath() + _T("skin"));CFrameWnd duiFrame(L"frame.xml");duiFrame.Create(NULL, _T("FrameWnd"), UI_WNDSTYLE_DIALOG | WS_MINIMIZEBOX, WS_EX_WINDOWEDGE);duiFrame.ShowModal();
}

SetInstance:初始化

SetResourcePath:设置资源路径(xml与图片地址)

Create:和win32创建窗口差不多,其实它里面就是封装了那几个系统函数

ShowModal:创建模态对话框。

最后一步就是要创建frame.xml文件了,这是最基本的xml代码,创建800*600以天蓝色为背景的窗口。记得保存到skin文件夹中。

好了,万事具备,就差编译执行了,试试效果吧。

我们第一个duilib界面已经完成了。喜欢这系列的朋友点拨关注收藏吧

http://www.dtcms.com/a/581926.html

相关文章:

  • MFC动态加载图片
  • Niagara Launcher 全新Android桌面启动器!给手机换个门面!
  • 【Vue】自定义指令之权限控制
  • asp.net网站第一次运行慢网站建设合同书保密条款
  • ZYNQ-7000双核协处理实战:ARM Cortex-A9与FPGA的智能数据采集系统
  • 慈溪哪里有做网站怎么看网站pv
  • 【PySpark】conda create -n pyspark python=3.8报错
  • CSS 数学函数完全指南:从基础计算到高级动画
  • uni-app打包app -- 在用户首次启动 App 时,强制弹出一个“用户协议与隐私政策”的确认对话框。
  • 互联网网站排名深圳住房和城乡建设局网站
  • Wi-Fi 7通信技术
  • @InitBinder注解
  • 20251107给荣品RD-RK3588-MID开发板跑Rockchip的原厂Android13系统时适配8寸屏的CTP【使用荣品的DTS】
  • 《隐匿之智:AI暗潮下的末日序章》
  • 网站建设玖金手指谷哥四wordpress注册怎样通过邮箱验证码
  • 山东首台(套)高端装备申报材料及申报流程解读
  • “互联网之光” 博览会启幕,AI+生活场景让科技触手可及
  • 应对 “读放大” 问题的新方法 —— OceanBase 中的 Merge-On-Write 表
  • 48_AI智能体核心业务之钉钉服务集成全局主控Agent:构建企业级智能助手的工程实践
  • 网站如何实现临时聊天wordpress 多店铺
  • 郑州做网站 哪家好wordpress 获取文章数量
  • 友汇网网站建设自考网页制作与网站建设
  • 【OTA专题】2 初级bootloader架构和基础工程移植
  • 极限命令执行6三字节RCE
  • 如何在Windows系统中加入程序自启动
  • 【一、基础篇】自注意力机制中的 Q,K、V 矩阵是什么缩写?
  • 配置 PostgreSQL 远程连接
  • Sampler AI 材质流:一键“喂”图生成 PBR
  • 中国建设的网站西安网站seo 优帮云
  • 关于“震颤”的学习笔记