【Duilib】通过xml文件布局界面

news2024/11/19 19:39:32

环境

VS版本:VS2013

概述

上一篇 【Duilib】入门 ,简单介绍了Duilib库的使用,这一篇测试一下通过xml布局界面。

步骤

1、创建工程

以 Win32\Win32项目 为模板创建TestByXml工程,步骤与上一篇基本一致。

2、创建MainWndFrame,这个可以理解为对话框(类似MFC的CDialog)

声明

class MainWndFrame : public WindowImplBase
{
protected:
	virtual CDuiString GetSkinFolder() override;
	virtual CDuiString GetSkinFile() override;
	virtual LPCTSTR GetWindowClassName(void) const override;

public:
	static const LPCTSTR kClassName;
	static const LPCTSTR kMainWndFrame;
};

定义

DuiLib::CDuiString MainWndFrame::GetSkinFolder()
{
	// GetInstancePath 接口返回默认的皮肤文件位置
	// 在 main 函数中我们可以通过 SetResourcePath 来设置路径
	return m_PaintManager.GetInstancePath();
}

DuiLib::CDuiString MainWndFrame::GetSkinFile()
{
    // 成员变量定义的皮肤文件名
	return kMainWndFrame;
}

LPCTSTR MainWndFrame::GetWindowClassName(void) const
{
	// 成员变量定义的窗口 class name
	return kClassName;
}
const LPCTSTR MainWndFrame::kClassName = _T("main_wnd_frame");
const LPCTSTR MainWndFrame::kMainWndFrame = _T("main_wnd_frame.xml");

3、在Main函数中调用。

微软给的框架代码裁剪掉。

    /*
 	// TODO:  在此放置代码。
	MSG msg;
	HACCEL hAccelTable;

	// 初始化全局字符串
	LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
	LoadString(hInstance, IDC_TESTBYXML, szWindowClass, MAX_LOADSTRING);
	MyRegisterClass(hInstance);

	// 执行应用程序初始化: 
	if (!InitInstance (hInstance, nCmdShow))
	{
		return FALSE;
	}

	hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_TESTBYXML));

	// 主消息循环: 
	while (GetMessage(&msg, NULL, 0, 0))
	{
		if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
		{
			TranslateMessage(&msg);
			DispatchMessage(&msg);
		}
	}

	return (int) msg.wParam;
	*/

增加Duilib的调用

    // 设置窗口关联的实例
	CPaintManagerUI::SetInstance(hInstance);

	// 设置皮肤的默认路径
	CPaintManagerUI::SetCurrentPath(CPaintManagerUI::GetInstancePath());
	CPaintManagerUI::SetResourcePath(_T("theme"));

	// 创建窗口
	MainWndFrame* pMainWndFrame = new MainWndFrame;
	pMainWndFrame->Create(nullptr, MainWndFrame::kClassName, UI_WNDSTYLE_DIALOG, 0);
	pMainWndFrame->CenterWindow();
	pMainWndFrame->ShowWindow();

	CPaintManagerUI::MessageLoop();

	if (nullptr != pMainWndFrame)
	{
		delete pMainWndFrame;
	}

	return 0;

4、在编译后生成exe平级目录创建theme文件夹,文件夹内创建文件main_wnd_frame.xml,文件格式UTF-8。

<?xml version="1.0" encoding="UTF-8"?>
<Window size="640,480" caption="0,0,0,35">
	<VerticalLayout>
		<HorizontalLayout bkcolor="#FFFFFFFF"/>
		<HorizontalLayout bkcolor="#FFFFFFFF">
			<Button text="Hello DuiLib" bkcolor="#FF1296DB"/>
		</HorizontalLayout>
		<HorizontalLayout bkcolor="#FFFFFFFF"/>
	</VerticalLayout>
</Window>

5、效果如下

 

代码下载:https://download.csdn.net/download/sunriver2000/87938141​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/694273.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

简单分享在微信上怎么实现分销功能

小程序分销开发怎么做&#xff1f;在如今的电商市场中&#xff0c;小程序分销成为了一种新兴的销售模式&#xff0c;通过分销模式&#xff0c;商家能够借助分销商的力量提高销售额&#xff0c;同时分销商也能不用投入大量资金和时间&#xff0c;就能在小程序上进行销售。那么&a…

FL Studio21中文版音频宿主软件下载教程

FL Studio是很适合新手上手的宿主软件&#xff0c;这得益于FL Studio独特的编曲逻辑。水果可以允许我们不使用音轨的思路来编曲。在FL Studio中我们创建一个pattern后&#xff0c;可以添加乐器或采样进去进行编写&#xff0c;编写完善后将Pattern拖进播放列表进行编排。不用区分…

高性能计算可以自学么?自学学完高性能计算能就业吗

随着超算互联网的认知越来越深&#xff0c;越来越多同学意识到高性能计算是未来有可能最好的就业方向之一。 高性能计算因其更偏底层、更不易被替代&#xff0c;因此广受广大大学生朋友和在职程序员的青睐。那么自学高性能计算可行吗&#xff1f;高性能计算可以自学吗&#xff…

2023年Java 毕业设计怎么选题,有哪些注意事项

个人简介&#xff1a;程序员徐师兄&#xff0c;7 年大厂程序员经历&#xff0c;擅长Java、微信小程序、Python、Android等&#xff0c;大家有这一块的问题可以一起交流&#xff01; 各类成品java毕设 。javaweb&#xff0c;ssh&#xff0c;ssm&#xff0c;springboot等等项目框…

Microsoft Visual Studio × 出现错误,无去启动

Microsoft Visual Studio 出现错误,无去启动visual studio。 streamJsonRpc.RemotelnvocationException:cannot find service module info file ‘ldentitystorageservice.servicehub.service.json’ in ‘c:}ProgramFilesvicrosoft visual studio2022,Communitycommon7Servic…

【Java-15】反射知识总结

01_类的加载 类的加载过程类的加载时机 类的加载 当程序在运行后&#xff0c;第一次使用某个类的时候&#xff0c;会将此类的class文件读取到内存&#xff0c;并将此类的所有信息存储到一个Class对象中 说明&#xff1a;Class对象是指java.lang.Class类的对象&#xff0c;此类…

GaussDB WDR报告分析

标题 问题描述问题现象告警业务影响原因分析处理方法步骤 1步骤 2步骤 3步骤 4步骤 6步骤 7步骤 8步骤9步骤 10步骤 11步骤 12 问题描述 CPU使用率高。 问题现象 出现CPU使用率超过阈值&#xff0c;CPU使用率快速上涨或短时间持续较高水平等现象。 告警 CPU使用率告警。 …

去除小程序home按钮

前言&#xff1a;当我们未登录时&#xff0c;会跳转到登录页&#xff0c;但是这时候登录页左上角会有一个跳转到首页的按钮&#xff0c;但是&#xff0c;我们不希望出现这个回到首页的按钮 去除前&#xff1a; 去除后&#xff1a; 代码&#xff1a; onShow() {wx.hideHomeBut…

html5的drag属性实现拖放

70. html5的drag属性实现拖放 拖放&#xff08;Drag 和 Drop&#xff09;是很常见的特性。它指的是您抓取某物并拖入不同的位置。 拖放是 HTML5 标准的组成部分&#xff1a;任何元素都是可拖放的。 下面我们通过一个例子来实现拖放 <div id"drop" ondrop"…

快一起来看看好用的ai绘画以图生图教程有哪些吧

我朋友近期在研究ai绘画软件&#xff0c;想要用它创造出一些独特的艺术作品。所以他去查看了ai绘画软件排行榜&#xff0c;但是&#xff0c;里面有很多款不同类型的绘画软件&#xff0c;让人有点眼花缭乱。于是&#xff0c;他来问我ai绘画软件排行靠前的哪个好&#xff0c;我就…

Excel - Windows操作系统下的键盘快捷方式

注意&#xff1a; * 这些快捷方式指的是美式键盘布局。 其他键盘布局的键可能与美式键盘上的键不完全对应。 * 快捷方式中的加号 () 表示需要同时按多个键。 * 快捷方式中的逗号 (,) 表示需要按顺序按多个键。 * 如果经常使用的操作没有快捷键&#xff0c;则可以“录制宏”…

mybatis 模拟03

pom.xml: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0…

hexo stellar设置笔记页面

stellar主题的作者在其文档介绍了如何进行笔记页面的简单设置&#xff0c;但是我看了以后还是有点云里雾里&#xff0c;在一顿查阅资料以后&#xff0c;我终于找到了解决办法。 参考下面这个博主的文章。写得很详细&#xff0c;这里就不再赘述啦。 Stellar主题自定义侧边栏教…

通联历史数据如何自动化导入 DolphinDB

在部署完 DolphinDB 后&#xff0c;需要将历史数据批量导入数据库&#xff0c;再进行数据查询、计算和分析等操作。为便于用户快速导入通联历史 Level-2 行情数据&#xff0c;DolphinDB 开发了 DolphinDBModules::easyTLDataImport 模块&#xff08;简称 easyTLDataImport 模块…

Vue之事件修饰符

文章目录 前言一、事件修饰符二、实例1.prevent2.stop3.capture4.self 总结 前言 对事件进行处理。 一、事件修饰符 prevent&#xff1a;阻止默认事件&#xff08;常用&#xff09;。stop&#xff1a;阻止事件冒泡&#xff08;常用&#xff09;。once&#xff1a;事件只触发一…

Linux 系统下克隆 Github 项目指令

文章目录 1. 安装 git2. 设置用户名和邮箱3. 生成密钥4. 复制密钥5. 配置 Github SSH keys6. 克隆项目 1. 安装 git Ubuntu 安装指令 apt-get install gitCentOS 安装指令 yum install git 查看 Git 版本信息 git version2. 设置用户名和邮箱 git config --global user.nam…

【AI底层逻辑】——篇章3(下):信息交换信息加密解密信息中的噪声

续&#xff1a;【AI底层逻辑】——篇章3&#xff08;上&#xff09;&#xff1a;数据、信息与知识&香农信息论&信息熵 目录 三、信息是如何交换的 1、互联网与信息交换 2、哈夫曼和有效编码 四、信息的加密与解密 1、密码学的发展 2、可以被公开的密钥 五、信息…

js 左右滑动切换图片

一、效果图 二、代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdev…

python在线考试系统-计算机毕设 附源码78268

Django在线考试系统 摘 要 本论文主要论述了如何使用python语言、Django框架开发一个在线考试系统&#xff0c;本系统将严格按照软件开发流程&#xff0c;进行各个阶段的工作&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述该系统的当前背景以及系统…

【JAVA基础】一文了解forEach循环

前言 相信大家肯定都看过阿里巴巴开发手册&#xff0c;而在阿里巴巴开发手册中明确的指出&#xff0c;不要再foreach循环里面进行元素的add和remove&#xff0c;如果你非要进行remove元素&#xff0c;那么请使用Iterator方式&#xff0c;如果存在并发&#xff0c;那么你一定要…