使用Duilib做桌面应用总结

使用Duilib做桌面应用总结

最近使用Duilib做了一个简单的桌面应用,在此做一个简单的总结,一是为了记录自己的学习过程,二是对Duilib的使用做一个简单的总结以便后期使用时查阅。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名申请、网络空间、营销软件、网站建设、江阳网站维护、网站推广。

Duilib介绍

直接上网站:https://github.com/qdtroy/DuiLib_Ultimate
Github连接

个人理解:

  1. 是一个UI库
  2. 基于C++语言开发
  3. 开源
  4. Windows系统,桌面应用

Duilib是Windows系统下基于C++语言的一套开源的桌面应用的UI库。

源码编译及Demo运行

  1. 从github上直接把×××下来或者拉下来

  2. 解压源码,源码结构说明如下:

使用Duilib做桌面应用总结

3.使用VS打开项目,如果提示有升级就确认即可

使用Duilib做桌面应用总结

4.第一次打开解决方案会比较慢,只能耐心等待。打开成功以后即可看到项目结构如下图:

使用Duilib做桌面应用总结

5.查看项目属性,下载下来的代码默认使用Unicode字符集,dll方式使用duilib

使用Duilib做桌面应用总结

6.选中duilib项目,右键打开菜单,选择“生成”选项开始生成项目。生成成功以后,会在bin木下生成dll文件。

dll文件的名称和项目属性的配置有关,默认生成的dll名称为:DuiLib_d.dll,同时位于DuiLib_Ultimate\bin目录下

7.duilib库编译生成完成以后,就可以生成demo了。打开demo项目,选中任一项目,并选择设置为启动项目,然后选择生成选项。

使用Duilib做桌面应用总结

8.生成完成以后,启动运行项目即可看到结果。

使用Duilib做桌面应用总结

使用Duilib做桌面应用总结

特别注意

  1. 生成的时候可以选择批生成,批生成就是所有项目全部生成。批生成比较慢,请耐心等待
  2. 此处之所以选择设置为启动项目,目的是为了好调试。选择批生成以后,所有项目都会生成到bin目录下。

使用Duilib做桌面应用总结

生成完成以后,即可在bin目录下查看生成的项目。

使用Duilib做桌面应用总结

Duilib使用介绍

  
Duilib的使用有两种方式,一种是DLL方式,一种是静态Lib方式
  

1.使用DLL的方式时,DLL需要和应用程序一起发布,同时放在应用程序的目录下。如果做成安装包时,需要把DLL也一起安装了,同时DLL需要注册。优点在于:应用程序比较小。
 
2.使用静态Lib时,不需要DLL,但是应用程序比较大。
  

两种方式均可以使用,至于使用哪种方式还需要结合具体实现的功能讨论

 

DLL方式使用介绍

 
从github上下载的代码默认使用的就是dll的方式,详细的使用过程可参考源码
 

1.编译出DLL以便使用。在文章的【源码编译及Demo运行】已进行详细介绍。

 

2.使用VS创建一个新的解决方案.创建一个新的解决方案的原因是为了从头开始搭建一个开发的环境,因此没有在源码的基础上添加工程。

1.文件->新建->项目 【创建一个Win32项目】,使用默认选项创建。

使用Duilib做桌面应用总结


Win32Project1项目即是我们的主项目,我们自己的代码或者功能就是在此项目内实现的

3.拷贝源码目录到我们的项目目录下

先把DuiLib整个目录拷贝到新建的解决方案目录下:

DuiLib_Ultimate\DuiLib ----->Win32Project1

4.删除VS默认生成的所有代码。如果报错的话,删除不存在的头文件。保留如下两项。

使用Duilib做桌面应用总结

 

5.添加一个类:CDuiFrameWnd,如果生成cpp文件可删除。代码如下
 

#pragma once
#include <UIlib.h>
using namespace DuiLib;

class CDuiFrameWnd : public CWindowWnd, public INotifyUI
{
public:
virtual LPCTSTR GetWindowClassName() const { return _T("DUIMainFrame"); }
virtual void Notify(TNotifyUI& msg) {}

virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    LRESULT lRes = 0;

    if (uMsg == WM_CREATE)
    {
        CControlUI *pWnd = new CButtonUI;
        pWnd->SetText(_T("Hello World"));   // 设置文字
        pWnd->SetBkColor(0xFF00FF00);       // 设置背景色

        m_PaintManager.Init(m_hWnd);
        m_PaintManager.AttachDialog(pWnd);
        return lRes;
    }

    if (m_PaintManager.MessageHandler(uMsg, wParam, lParam, lRes))
    {
        return lRes;
    }

    return __super::HandleMessage(uMsg, wParam, lParam);
}

protected:
CPaintManagerUI m_PaintManager;
};


 
 
**现在要解决报错的问题,原因是找不到头文件,因此我们要设置头文件所在路径**
  

**1.打开项目属性选项->VC++选项->配置include目录和库目录**
  
![](/upload/otherpic50/b7fcee772f8ad720d4159a5d650731c5.jpg)

 
**2.首先设置include目录,include目录为duilib的根目录,推荐使用相对路径配置,此处为:../DuiLib 添加以后已经不报错了**
  
![](/upload/otherpic50/cdc5b6300b141493e3df047e2fbcbcfe.jpg)

 
**3.修改入口文件也就main函数所在文件,此示例中为:Win32Project1.cpp**
  
```c++

#include "stdafx.h"

#include <windows.h>
#include <tchar.h>
#include "DuiFrameWnd.h" //本次添加

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
    // 一下内容为本次修改
    CPaintManagerUI::SetInstance(hInstance);

    CDuiFrameWnd duiFrame;
    duiFrame.Create(NULL, _T("DUIWnd"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
    duiFrame.ShowModal();
    return 0;
}

我们在工程目录下新建一个目录为lib。从源码编译的目录里面拷贝文件到lib目录下,如果嫌麻烦可以全部一起拷贝。
 
使用dll方式时,dll和应用程序要放在同一个目录下,因此我们把源码编译后bin目录下的:DuiLib****.dll的文件全部也拷贝到lib目录下,以便使用。
 
拷贝完成后的lib目录如下:
  
使用Duilib做桌面应用总结

 

设置工程的lib目录和lib名称
 
使用Duilib做桌面应用总结

如果找不到lib时编译报错信息如下
 
 

使用Duilib做桌面应用总结

原因是找不到lib文件。
到源码工程里面找到lib目录,将里面的文件按照配置复制到我们自己的目录下。

运行项目,报错如下:
 
使用Duilib做桌面应用总结

 

把dll文件复制到debug目录下即可。如果是Release版本的话,则在Release目录下。此处选择复制的dll为DuiLib_d.dll。

使用Duilib做桌面应用总结
  

另外,也可以在代码中设置使用lib

在DuiFrameWnd.h文件中添加如下宏定义,那么会根据不同的配置使用不同lib,同样的也需要拷贝对应的dll文件。

#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
#endif

不同的名称可以在编译源码时进行修改和设置,如下图:

使用Duilib做桌面应用总结

 

静态Lib方式使用介绍

使用总结

当前名称:使用Duilib做桌面应用总结
分享路径:https://www.cdcxhl.com/article2/gdhooc.html

成都网站建设公司_创新互联,为您提供响应式网站全网营销推广软件开发品牌网站设计微信公众号手机网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

商城网站建设