成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

使用Duilib做桌面應(yīng)用總結(jié)

使用Duilib做桌面應(yīng)用總結(jié)

最近使用Duilib做了一個簡單的桌面應(yīng)用,在此做一個簡單的總結(jié),一是為了記錄自己的學(xué)習(xí)過程,二是對Duilib的使用做一個簡單的總結(jié)以便后期使用時查閱。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名申請、網(wǎng)絡(luò)空間、營銷軟件、網(wǎng)站建設(shè)、江陽網(wǎng)站維護(hù)、網(wǎng)站推廣。

Duilib介紹

直接上網(wǎng)站:https://github.com/qdtroy/DuiLib_Ultimate
Github連接

個人理解:

  1. 是一個UI庫
  2. 基于C++語言開發(fā)
  3. 開源
  4. Windows系統(tǒng),桌面應(yīng)用

Duilib是Windows系統(tǒng)下基于C++語言的一套開源的桌面應(yīng)用的UI庫。

源碼編譯及Demo運行

  1. 從github上直接把×××下來或者拉下來

  2. 解壓源碼,源碼結(jié)構(gòu)說明如下:

使用Duilib做桌面應(yīng)用總結(jié)

3.使用VS打開項目,如果提示有升級就確認(rèn)即可

使用Duilib做桌面應(yīng)用總結(jié)

4.第一次打開解決方案會比較慢,只能耐心等待。打開成功以后即可看到項目結(jié)構(gòu)如下圖:

使用Duilib做桌面應(yīng)用總結(jié)

5.查看項目屬性,下載下來的代碼默認(rèn)使用Unicode字符集,dll方式使用duilib

使用Duilib做桌面應(yīng)用總結(jié)

6.選中duilib項目,右鍵打開菜單,選擇“生成”選項開始生成項目。生成成功以后,會在bin木下生成dll文件。

dll文件的名稱和項目屬性的配置有關(guān),默認(rèn)生成的dll名稱為:DuiLib_d.dll,同時位于DuiLib_Ultimate\bin目錄下

7.duilib庫編譯生成完成以后,就可以生成demo了。打開demo項目,選中任一項目,并選擇設(shè)置為啟動項目,然后選擇生成選項。

使用Duilib做桌面應(yīng)用總結(jié)

8.生成完成以后,啟動運行項目即可看到結(jié)果。

使用Duilib做桌面應(yīng)用總結(jié)

使用Duilib做桌面應(yīng)用總結(jié)

特別注意

  1. 生成的時候可以選擇批生成,批生成就是所有項目全部生成。批生成比較慢,請耐心等待
  2. 此處之所以選擇設(shè)置為啟動項目,目的是為了好調(diào)試。選擇批生成以后,所有項目都會生成到bin目錄下。

使用Duilib做桌面應(yīng)用總結(jié)

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

使用Duilib做桌面應(yīng)用總結(jié)

Duilib使用介紹

??
Duilib的使用有兩種方式,一種是DLL方式,一種是靜態(tài)Lib方式
??

1.使用DLL的方式時,DLL需要和應(yīng)用程序一起發(fā)布,同時放在應(yīng)用程序的目錄下。如果做成安裝包時,需要把DLL也一起安裝了,同時DLL需要注冊。優(yōu)點在于:應(yīng)用程序比較小。
?
2.使用靜態(tài)Lib時,不需要DLL,但是應(yīng)用程序比較大。
??

兩種方式均可以使用,至于使用哪種方式還需要結(jié)合具體實現(xiàn)的功能討論

?

DLL方式使用介紹

?
從github上下載的代碼默認(rèn)使用的就是dll的方式,詳細(xì)的使用過程可參考源碼
?

1.編譯出DLL以便使用。在文章的【源碼編譯及Demo運行】已進(jìn)行詳細(xì)介紹。

?

2.使用VS創(chuàng)建一個新的解決方案.創(chuàng)建一個新的解決方案的原因是為了從頭開始搭建一個開發(fā)的環(huán)境,因此沒有在源碼的基礎(chǔ)上添加工程。

1.文件->新建->項目 【創(chuàng)建一個Win32項目】,使用默認(rèn)選項創(chuàng)建。

使用Duilib做桌面應(yīng)用總結(jié)


Win32Project1項目即是我們的主項目,我們自己的代碼或者功能就是在此項目內(nèi)實現(xiàn)的

3.拷貝源碼目錄到我們的項目目錄下

先把DuiLib整個目錄拷貝到新建的解決方案目錄下:

DuiLib_Ultimate\DuiLib ----->Win32Project1

4.刪除VS默認(rèn)生成的所有代碼。如果報錯的話,刪除不存在的頭文件。保留如下兩項。

使用Duilib做桌面應(yīng)用總結(jié)

?

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"));   // 設(shè)置文字
        pWnd->SetBkColor(0xFF00FF00);       // 設(shè)置背景色

        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;
};


?
?
**現(xiàn)在要解決報錯的問題,原因是找不到頭文件,因此我們要設(shè)置頭文件所在路徑**
??

**1.打開項目屬性選項->VC++選項->配置include目錄和庫目錄**
??
![](/upload/otherpic50/b7fcee772f8ad720d4159a5d650731c5.jpg)

?
**2.首先設(shè)置include目錄,include目錄為duilib的根目錄,推薦使用相對路徑配置,此處為:../DuiLib 添加以后已經(jīng)不報錯了**
??
![](/upload/otherpic50/cdc5b6300b141493e3df047e2fbcbcfe.jpg)

?
**3.修改入口文件也就main函數(shù)所在文件,此示例中為: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)
{
    // 一下內(nèi)容為本次修改
    CPaintManagerUI::SetInstance(hInstance);

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

我們在工程目錄下新建一個目錄為lib。從源碼編譯的目錄里面拷貝文件到lib目錄下,如果嫌麻煩可以全部一起拷貝。
?
使用dll方式時,dll和應(yīng)用程序要放在同一個目錄下,因此我們把源碼編譯后bin目錄下的:DuiLib****.dll的文件全部也拷貝到lib目錄下,以便使用。
?
拷貝完成后的lib目錄如下:
??
使用Duilib做桌面應(yīng)用總結(jié)

?

設(shè)置工程的lib目錄和lib名稱
?
使用Duilib做桌面應(yīng)用總結(jié)

如果找不到lib時編譯報錯信息如下
?
?

使用Duilib做桌面應(yīng)用總結(jié)

原因是找不到lib文件。
到源碼工程里面找到lib目錄,將里面的文件按照配置復(fù)制到我們自己的目錄下。

運行項目,報錯如下:
?
使用Duilib做桌面應(yīng)用總結(jié)

?

把dll文件復(fù)制到debug目錄下即可。如果是Release版本的話,則在Release目錄下。此處選擇復(fù)制的dll為DuiLib_d.dll。

使用Duilib做桌面應(yīng)用總結(jié)
??

另外,也可以在代碼中設(shè)置使用lib

在DuiFrameWnd.h文件中添加如下宏定義,那么會根據(jù)不同的配置使用不同lib,同樣的也需要拷貝對應(yīng)的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

不同的名稱可以在編譯源碼時進(jìn)行修改和設(shè)置,如下圖:

使用Duilib做桌面應(yīng)用總結(jié)

?

靜態(tài)Lib方式使用介紹

使用總結(jié)

當(dāng)前名稱:使用Duilib做桌面應(yīng)用總結(jié)
分享路徑:http://jinyejixie.com/article2/gdhooc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、全網(wǎng)營銷推廣、軟件開發(fā)品牌網(wǎng)站設(shè)計、微信公眾號手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)
大新县| 永善县| 武陟县| 崇明县| 抚宁县| 阳山县| 板桥市| 溧水县| 夏津县| 灌阳县| 浪卡子县| 东丰县| 古丈县| 上思县| 兴文县| 永州市| 安陆市| 句容市| 静乐县| 浪卡子县| 报价| 双江| 青龙| 澄江县| 景德镇市| 南通市| 湄潭县| 桐乡市| 城固县| 灵璧县| 呈贡县| 湘阴县| 巧家县| 拜泉县| 汶川县| 布尔津县| 仁化县| 阳江市| 陇川县| 崇信县| 阜康市|