Duilib学习笔记(一)—— 环境搭建
Duilib学习笔记(一)—— 环境搭建
- 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)此时再运行,就能够成功运行了
点击中间红色按钮即可关闭程序。
Duilib学习笔记(一)—— 环境搭建相关推荐
- 深度学习(二)theano学习笔记(1)环境搭建
theano学习笔记(1)环境搭建 原文地址:http://blog.csdn.net/hjimce/article/details/46654229 作者:hjimce 搭建theano实属不易,因 ...
- Go学习笔记_环境搭建
Go学习笔记_环境搭建 Go背景知识 go的特点(官网): Build fast, reliable, and efficient software at scale- Go is an open s ...
- Django学习笔记 开发环境搭建
为什么使用django? 1.支持快速开发:用python开发:数据库ORM系统,并不需要我们手动地构造SQL语句,而是用python的对象访问数据库,能够提升开发效率. 2.大量内置应用:后台管理系 ...
- cocos2d-x lua 学习笔记(1) -- 环境搭建
Cocos2d-x 3.0以上版本的环境搭建和之前的Cocos2d-x 2.0 版差异较大的,同时从Cocos2d-x 3.0项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后, ...
- HarmonyOS_BearPi-HM Nano学习笔记之环境搭建
前言:期待了已久的小熊派鸿蒙开发板终于出世了,12月11号准时抢到优惠券,果断下单,运费一起也就是29.9,实话说,很划算的,毕竟对自己的学习投资嘛,得舍得. 下面我把代码仓库.资料.视频课程地址贴出 ...
- 移植u-boot1.1.6到友善mini2440学习笔记之环境搭建(系列之一)
前记:两年前就想学习ARM,由于一些原因耽搁了下来.如今迫于找硬件岗位工作的压力,不得不硬着头皮学习ARM,以前就知道ARM入门是计较困难的,如今真是体会深切啊,全是心酸泪,不仅自己的无知跟自己作对, ...
- Linux学习笔记1—环境搭建
文章目录 一.Linux是什么? 二.购买云服务器搭建Linux环境 1 Xshell 1.1 Linux下简单的用户管理 1.2 Xshell的复制粘贴 2 vscode+RemoteSSH插件 3 ...
- wepy学习笔记之环境搭建
写了近两年小程序了,越来越发现原生小程序有太多鸡肋的地方.所以今天准备尝试一下wepy,正好最近手上有个外包,可以拿来练手.如果可以的话,或许会出一系列wepy相关的文章(偏实战),欢迎大佬们指正. ...
- Python学习笔记1环境搭建+Numpy
Python環境安裝 系統環境path裡面配置安裝路徑打開cmd輸入py查看是否安裝路徑:D:/sofeware/python3.8 配置系統環境變量(可以安裝時選擇本身就配置) [外链图片转存失败, ...
- node学习笔记_01 环境搭建
一.下载安装nvm (node版本管理器),方便以后版本切换 nvm list -> 查看node版本(版本最好在8.0以上,不然在vsCode断点调试进不去,跟node版 ...
最新文章
- 长篇自动驾驶技术综述论文(上)
- 【leetcode】85. Maximal Rectangle 0/1矩阵的最大全1子矩阵
- Ajax、Comet与Websocket
- OpenStack遇到的坑
- “面试不败计划“:hibernate和mybatis比较
- ajax jsp模糊查询源码,ajax模糊查询api
- jsonp react 获取返回值_Django+React全栈开发:文章列表
- 千万别被“读书无用”给害了
- WinForm中显示韩语,韩文
- python装饰器讲解_Python装饰器讲解的不能再通俗易懂了(建议收藏)
- VUE3+TS脚手架安装+目录文件规范
- mysql基础学习--day7
- TiDB-explain详解
- 跨境电商:我们快要死了!可能都撑不过一个月
- java实现根据高德地图API接口进行地址位置解析,将地址转化为经纬度
- 各种EDA软件的PCB文件后缀名
- WPS在引用中制作目录
- 几种 VR 的数据传输方案
- C++之string的compare用法
- qq邮件在腾讯官方服务器有备份吗,foxmail怎么备份和恢复邮件?