Duilib学习笔记(一)—— 环境搭建

Duilib学习笔记(一)—— 环境搭建

Duilib简介

Duilib 是一款强大的界面开发工具,可以将用户界面和处理逻辑彻底分离,极大地提高用户界面的开发效率,遵循bsd协议。

源码编译

工具

操作系统:Windows 10
编译器:Visual Studio 2019
Github源码:https://github.com/duilib/duilib

步骤

1)解压Duilib源码,将解压出来的「duilib-master」文件夹重命名为「Duilib」
在这里插入图片描述
2)使用Visual Studio 2019打开「DuiLib.sln」
在这里插入图片描述
3)若打开「DuiLib.sln」的过程中提示重定向项目(如下图),点击确定即可。
在这里插入图片描述
4)检查「解决方案资源管理器中」是否有项目存在”Visual Studio 2013 - Windows XP“字样
在这里插入图片描述
5)修改步骤4图中标红的项目属性(右键-属性),将平台工具集修改为Visual Studio 2019(若没有该项请使用Visual Studio Installer安装相关SDK)
在这里插入图片描述
6)编译
在这里插入图片描述
7)Duilib提供了四种项目配置,第一次编译这四个项目配置时,都需要从步骤4开始。
在这里插入图片描述

  • Debug:多字节字符集Debug版本
  • Release:多字节字符集Release版本
  • UnicodeDebug:Unicode字符集Debug版本
  • UnicodeRelease:Unicode字符集Release版本

8)成功编译后,尝试运行示例程序。
在这里插入图片描述
9)步骤7图中的所有版本可以先都编译一份,在开发时,可以根据需求选择使用不同版本。

第一个Duilib项目

参考资料:《duilib入门到精通》- 如何新建一个duilib项目(duilib视频教程)

1)创建新项目-Windows桌面向导
在这里插入图片描述
2)配置新项目
在这里插入图片描述在这里插入图片描述
3)将编译好的Duilib源码中的DuiLib文件夹拷贝至当前项目的源代码所在路径中
在这里插入图片描述
4)将编译好的Duilib源码中的lib文件夹拷贝至当前项目的DuiLib文件夹中
在这里插入图片描述

5)在当前项目源码路径中创建一个skin文件夹,在里面新建一个demo.xml文件,用于配置控件信息
在这里插入图片描述

6)编写代码

//stdafx.h
//stdafx.h
#pragma once

#define WIN32_LEAN_AND_MEAN             // 从 Windows 头文件中排除极少使用的内容
// Windows 头文件
#include <windows.h>

// 包含库头文件
#include "DuiLib/UILib.h"
// 引入命名空间
using namespace DuiLib;

// 导入lib库
#ifndef UNICODE
	#ifndef _DEBUG
		// Release版本的库
		#pragma comment(lib, "DuiLib\\lib\\Duilib.lib")
	#else
		// Debug版本的库
		#pragma comment(lib, "DuiLib\\lib\\Duilib_d.lib")
	#endif
#else
	#ifndef _DEBUG
		// Release版本的库
		#pragma comment(lib, "DuiLib\\lib\\Duilib_u.lib")
	#else
		// Debug版本的库
		#pragma comment(lib, "DuiLib\\lib\\Duilib_ud.lib")
	#endif
#endif

//CMainWnd.h
#pragma once

#include "stdafx.h"
#include "DuiLib/Utils/WinImplBase.h"
#include "DuiLib/Core/UIDefine.h"

class CMainWnd :
    public WindowImplBase
{
public:
    CMainWnd(void);
    virtual ~CMainWnd(void);

public:
    virtual CDuiString GetSkinFolder();
    virtual CDuiString GetSkinFile();
    virtual LPCTSTR GetWindowClassName(void) const;
    void Notify(TNotifyUI& msg);
};
//CMainWnd.cpp
#include "CMainWnd.h"

CMainWnd::CMainWnd(void)
{
}

CMainWnd::~CMainWnd(void)
{
}

CDuiString CMainWnd::GetSkinFolder()
{
	return _T("");
}

CDuiString CMainWnd::GetSkinFile()
{
	return _T("demo.xml");
}

LPCTSTR CMainWnd::GetWindowClassName(void) const
{
	return _T("CMainWnd");
}

void CMainWnd::Notify(TNotifyUI& msg)
{
	// 消息类型
	if (msg.sType == _T("click")) {
		// 控件名称
		CDuiString sName = msg.pSender->GetName();
		if (sName == _T("hello")) {
			Close(IDOK);
			// 如果不加这句,窗口关闭了,但程序不会退出
			PostQuitMessage(0);
			return;
		}
	}
	WindowImplBase::Notify(msg);
}
//TestDuilib.cpp
#include "stdafx.h"
#include "CMainWnd.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::SetResourceType(UILIB_FILE);
	// 资源路径:执行程序同目录的Skin文件夹下
	// CPaintManagerUI::GetInstancePath() 执行程序目录
	CDuiString sResourcePath;
	sResourcePath.Format(_T("%s..\\TestDuilib\\skin"), CPaintManagerUI::GetInstancePath());
	//MessageBox(NULL, sResourcePath, _T("test"), MB_OK);
	CPaintManagerUI::SetResourcePath(sResourcePath);

	//实例化窗口
	CMainWnd* pMainWnd = new CMainWnd();
	// 创建窗口
	pMainWnd->Create(NULL, _T("TestDuilib"), WS_POPUP | WS_VISIBLE, 0);
	// 窗口居中显示
	pMainWnd->CenterWindow();

	// 启动消息循环
	CPaintManagerUI::MessageLoop();

	return 0;
}
<?xml version="1.0" encoding="utf-8"?>
<!--前面创建的skin目录中的demo.xml代码-->
<Window size="800, 600" caption="0,0,0,30">
  <VerticalLayout bkcolor="#ffffffff" childvalign="vcenter" childalign="center">
    <HorizontalLayout />
    <Button name="hello" bkcolor="#ffff0000" width="80" height="30" text="Hello World"/>
    <HorizontalLayout />
  </VerticalLayout>
</Window>

7)编译,检查是否编译成功
在这里插入图片描述
8)若编译成功,此时运行会提示找不到Duilib_ud.dll文件
在这里插入图片描述
9)将编译好的Duilib源码中的bin目录中的Duilib_ud.dll拷贝至当前项目的Debug文件夹,和exe文件放在一起
在这里插入图片描述
10)此时再运行,就能够成功运行了
在这里插入图片描述点击中间红色按钮即可关闭程序。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值