内容全部为转载:
VS2013的编译,https://www.cnblogs.com/Alberl/p/3342030.html
duilib框架介绍,以及VS2013配置,创建工程,调试代码部分:
https://blog.csdn.net/lanuage/article/details/52040306
https://blog.csdn.net/GG_SiMiDa/article/details/70792890
具体为:

  1. 下载duilib-master;
  2. 解压后用VS编译器编译一遍,编译部分参考第一个网址;
  3. 配置VS环境, 调试代码,参考第二个网址和第三个网址;

环境配置为:


在环境变量的Path变量中添加对应的dll路径,这样就不需要将dll文件拷贝到自己项目的exe文件所在位置处。

创建工程,测试代码

我这里为,创建了一个win32工程,选择空项目,添加.cpp文件,文件内容为:

#include <DuiLib\UIlib.h>
using namespace DuiLib;#ifdef _DEBUG
#   ifdef _UNICODE
#       pragma comment(lib, "Duilib_ud.lib")
#   else
#       pragma comment(lib, "Duilib_d.lib")
#   endif
#else
#   ifdef _UNICODE
#       pragma comment(lib, "Duilib_u.lib")
#   else
#       pragma comment(lib, "Duilib.lib")
#   endif
#endifclass CFrameWnd : public CWindowWnd
{
public:virtual LPCTSTR GetWindowClassName() const{return _T("FrameWnd");}virtual void OnFinalMessage(HWND hWnd){delete this;}
};int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPTSTR lpCmdLine, int nShowCmd){// new一个窗口对象CFrameWnd* pFrame = new CFrameWnd;// 注册窗口类、创建窗口pFrame->Create(NULL, _T("sample01"), UI_WNDSTYLE_FRAME, UI_WNDSTYLE_EX_FRAME,100, 100, 800, 600, NULL);// 显示窗口、进入窗口消息循环pFrame->ShowModal();return 0;
}

显示效果为:

duilib简介:

国内首个开源 的directui 界面库,它提供了一个所见即所得的开发工具——UIDesigner,它只有主框架窗口,其余的空间全部采用绘制的方式实现,所以对于控件来说没有句柄和窗口类等内容,它通过UIDesigner工具将用户定义的窗口保存在xml文件中,在创建窗口时读取xml文件中的内容,来绘制相应的控件。目前有许多界面采用duilib编写,大家可以去网上搜集相关资料。

窗口显示前的最后一个函数为:

CWindowWnd::Create(HWND hwndParent, LPCTSTR pstrName, DWORD dwStyle, DWORD dwExStyle, int x, int y, int cx, int cy, HMENU hMenu)
{if( GetSuperClassName() != NULL && !RegisterSuperclass() ) return NULL;if( GetSuperClassName() == NULL && !RegisterWindowClass() ) return NULL;m_hWnd = ::CreateWindowEx(dwExStyle, GetWindowClassName(), pstrName, dwStyle, x, y, cx, cy, hwndParent, hMenu, CPaintManagerUI::GetInstance(), this);ASSERT(m_hWnd!=NULL);return m_hWnd;
}
//::CreateWindowEx(...)为win32 API函数,该函数运行完即显示窗口,

总结

duilib的基本框架,下面来总结一下:

  1. CPaintManagerUI::SetInstance(hInstance);设置进程的实例句柄,这个值会在注册窗口类时使用
  2. 在CWindowWnd类中由Create函数完成窗口类的创建于注册,以及窗口的创建工作
  3. CWindowWnd类中的ShowWindow函数用于显示窗口
  4. 消息循环由CPaintManagerUI::MessageLoop();代码完成
  5. 最后需要重写MessageHandle函数用于处理我们感兴趣的消息。并且在最后需要调用基类的MessageHandle函数,主要是为了调用DefWindowProc处理我们不感兴趣的消息。

duilib环境配置以及简单入门介绍相关推荐

  1. Python环境搭建以及简单入门介绍

    Python简介 Python是著名的"龟叔"Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. 现在,全世界差不多有600多种编程 ...

  2. IDEA环境配置及Spring入门

    IDEA环境配置及Spring入门–以HelloWorld为例的简单介绍与开发步骤 前言:本文主要内容 一:IDEA环境配置 二:用传统Java编程方式写HelloWorld例子 传统java:不使用 ...

  3. mmdetection 环境配置与简单测试(mmrotate同理)

    mmdetection 环境配置与简单测试(mmrotate同理) 环境配置 annaconda环境安装 创建新的虚拟环境(此处参考官方) 代码结构分析讲解 接下来详细介绍自己数据集的训练 环境配置 ...

  4. 【MADDPG(MPE)——环境配置与用法详细介绍(多智能体强化学习))】

    MADDPG(MPE)--环境配置与用法详细介绍(多智能体强化学习) MADDPG(MPE) 介绍 MPE环境安装教程 前期准备 MPE 安装包介绍 MPE 安装环境要求 开始安装 环境测试 MPE环 ...

  5. golang开发环境配置以及简单使用

    golang开发环境配置以及简单使用 编译golang程序 go build命令的使用 http://c.biancheng.net/view/120.html 使用go build, 将main.g ...

  6. 40系笔记本(可不联网激活)深度学习生产力(环境配置和简单训练测试)

    40系笔记本深度学习.转码生产力(环境配置和简单训练测试)这里写自定义目录标题 深度学习环境准备 CUDA.CUDNN版本问题 torch版本问题 其他软件版本的安装命令 训练测试代码地址 关于Lin ...

  7. CentOS7.4中Postfix邮件服务器的搭建(一)-----环境配置及简单搭建

    CentOS7.4中Postfix邮件服务器的搭建(一)-----环境配置及简单搭建 实验内容: 1. 初始环境的优化 2. DNS服务器的搭建和postfix域名解析 3. Postfix服务器安装 ...

  8. Golang入门,安装与环境配置,简单代码入门

    目录 一:安装包下载和环境配置 1.1软件下载和安装 1.2环境变量配置 1.3环境配置验证 二:完成HelloWorld程序 2.1编码 2.2执行 三:开发IDE工具软件安装和配置 3.1下载和安 ...

  9. Dagger2集成之环境配置及简单验证

    1.1 配置Dagger2依赖关系 目前android应用的代码管理大多采用Gradle来做,但是在集成Dagger2的过程中,Gradle的版本与Dagger2的依赖方式存在一定的相关性,在网上一些 ...

最新文章

  1. C++关键字const
  2. 程序员拯救乐坛?OpenAI用“逆天”GPT2.0搞了个AI音乐生成器
  3. 解决报错: MobaXterm X11 proxy: Unsupported authorisation protocol
  4. linux 远程访问
  5. 什么是API,SDK?它们之间有什么关系?
  6. 动效设计中的隐喻-1
  7. Android使用SVG矢量图打造酷炫动效!
  8. 如何写一个高效进程/线程池_关于高效企业测试的思考(1/6)
  9. 虚拟主机选择php版本,虚拟主机的php版本如何选择
  10. android创建空文件,ADT 更新 eclipse srclayout 文件夹创建时候为空
  11. JavaScript萌新基础
  12. 学习MiniGui之多线程机制【转】
  13. mysql中时间类型datetime,timestamp与int的区别
  14. IDEA 手动导入本地依赖包
  15. 《Bible》各版本
  16. Python中出现问题:ValueError: not enough values to unpack (expected x, got x)的可能汇总及解决办法
  17. 牛魔王珍满福拉面 - 北京团购网|京东团购
  18. 计算机不驱动u盘启动,电脑U盘驱动没有启用的解决方法
  19. Verilog仿真器
  20. 1736. Latest Time by Replacing Hidden Digits

热门文章

  1. linux git还原文件,Gitlab备份到windows、在Linux恢复
  2. 别再无脑wwm了!在下游任务中不一定有效!
  3. 号外号外,第一届沙雕项目竞赛,这些项目以数万Star惨获提名
  4. 实时数据产品实践——美团大交通战场沙盘
  5. 手把手教你求职进入BAT
  6. 风控模型师面试准备--技术篇(逻辑回归、决策树、集成学习)
  7. Failed to execute goal org.apache.maven.plugins:maven-resources-plugin
  8. leetcode--数组(Medium2)
  9. 【Java】关于Java中的各种流
  10. Java总结:SpringBoot的使用cmd命令进行Gradle构建