日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Duilib教程-HelloDuilib及DuiDesigner的简单使用

發布時間:2024/4/11 编程问答 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Duilib教程-HelloDuilib及DuiDesigner的简单使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、HelloDuilib

1.?首先理解DUILIB顯示的一個基本流程,如下圖:

?

?

在Duilib中,WindowImplBase?這個類代表了圖中?“CWndClass”。

所以我們需要做的是:

1)生成一個XML。

2)生成一個WindowImplBase對象。

3)加載XML。

4)顯示窗口。

但是編寫的時候,WindowImplBase已經幫我們做了許多工作,我們只需要指定XML路徑,它就能夠幫助我們自動加載,非常方便。

但是一般我不喜歡先編寫XML,我喜歡先寫MAIN函數,再編寫占位函數,再一個個地實現占位函數。所以我們進入下一個步驟。

?

2.?建立工程。

1)如果是第一次使用DUILIB的話,你要把DUILIB加入到VS2008的環境變量中,我的Duilib保存在I:\GitHub\Duilib,設置的路徑為:

包含路徑:I:\GitHub\Duilib

源路徑:I:\GitHub\Duilib

庫路徑:I:\GitHub\lib

如下圖:

?

?

最后還要設置一下系統的環境變量為:I:\GitHub\Duilib\Bin,右鍵“我的電腦”->“屬性”->“高級系統設置”,如果是XP的話,可能稍有不同,彈出的操作如下圖:

?

?

2)新建一個WIN32工程,如下圖:

?

然后一直“下一步”。

?

在HelloDuilib.cpp中,只保留下列代碼,其余全刪除。

#include "stdafx.h" #include "HelloDuilib.h"int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow){ }

?

在stdafx.h中加入以下代碼:

#include <ObjBase.h> #include <Duilib/UIlib.h>using namespace DuiLib;#ifdef _DEBUG #pragma comment (lib, "duilib_ud.lib") #else #pragma comment (lib, "duilib_u.lib") #endif

然后編譯一下,如果編譯沒有問題,就進入下一步,當然你得先編譯DUILIB源碼,編譯unicode_debug和unicode_release兩個版本。當然,全部版本都編譯更佳。

?

3)新建一個從?WindowImplBase繼承的類?CHelloDuilibWnd,然后將它的頭文件的代碼修改如下:

class CHelloDuilibWnd : public WindowImplBase { public: CHelloDuilibWnd(void); ~CHelloDuilibWnd(void);protected: virtual CDuiString GetSkinFolder() { return _T ("skin"); }; virtual CDuiString GetSkinFile() { return _T ("HelloDuilib.xml"); }; virtual LPCTSTR GetWindowClassName(void) const { return _T ("HelloDuilib_Wnd"); }; };

?

說明:

GetSkinFolder?()?需要返回?皮膚XML?所在的文件夾

GetSkinFile?()?需要返回?皮膚?XML?的文件名(也可以包含路徑)

GetWindowClassName?()?需要返回這個窗口的類名,這個類名用于?RegisterClass.

?

4)返回去編寫?WinMain?函數,如下:

#include "stdafx.h" #include "HelloDuilibWnd.h" #include "HelloDuilib.h"int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow){ CPaintManagerUI::SetInstance(hInstance);// 加載XML的時候,需要使用該句柄去定位EXE的路徑,才能加載XML的路徑CHelloDuilibWnd* wnd = new CHelloDuilibWnd; // 生成對象 wnd->Create(NULL, NULL, UI_WNDSTYLE_DIALOG, 0); // 創建DLG窗口 wnd->CenterWindow(); // 窗口居中 wnd->ShowWindow(); // 顯示 CPaintManagerUI::MessageLoop(); // 消息循環delete wnd; // 刪除對象return 0; }

?

3.我們再去創建皮膚XML。

首先,你得編譯?DuiDesigner?這個工程,使用?DuiDesigner.sln?解決方案進行編譯。在?bin中可以找到生成的?DuiDesigner.exe。打開,然后新建一個名為?HelloDuilib?的文件,該名稱即為?CHelloDuilibWnd::GetSkinFile()返回的名稱。

?

接下來,添加一個?VerticalLayout(點擊下圖中的1,再點擊中間窗口位置,不是使用拖動的方式),然后選中這個VerticalLayout,再在最右邊的屬性欄中設置它的背景顏色。再在上面添加一個?Label?控件,將其Text修改為?“HelloDuilib”。

?

?

當然,你還可以添加按鈕、EDIT等控件,還可以試驗?BkColor2,?BorderSize,?BorderColor等屬性。然后按?“CTRL+T”進行測試,我的測試結果如下:

?

按ESC即可退出測試,與VS的對話框測試一樣的快捷鍵。

?

4.到?HelloDuilib?工程的生成目錄下新一個文件夾“skin”,將生成的XML放到這個skin文件夾中,點擊運行。

?

?

即可看到結果。

當然,你會發現你退不了程序,原因是使用了

CPaintManagerUI::MessageLoop();?//?消息循環

跳出該循環,必須使用?PostQuitMessage?(0);?函數。

當然你可以使用:

Wnd->ShowModal?()?用模態對話框代替非模態對話框顯示

?

wnd->ShowWindow();?//?顯示

CPaintManagerUI::MessageLoop();?//?消息循環

?

二、DuiDesigner的使用。

?

如上圖,主要分為六大模塊。

1為皮膚設計窗口,在上面添加控件規劃你的皮膚。

2為WND窗口,請單擊1與2,看屬性欄變化。

3為控件添加窗口

4為屬性設置窗口

5為窗口測試及控件對齊窗口

6為已添加控件層次查看窗口,當然它有三個TAB,只有控件層次才最有用。

?

在編寫XML的時候,一定注意:

DUILIB?XML一定要有一個底層?Layout!!!

不能直接在?WND上添加控件!

?

說明,這個工具可能會有諸多BUG,屬性更改失效、時不時崩潰等,不過我遇到崩潰的情況比較少,新手可能會遇到較多,但不要抱怨,畢竟有這樣一個工具已經是十分難能可貴了。

?

可能你已經看了屬性欄中有諸多屬性,你可以試著添加圖片,修改顏色,修改邊框等查看一下,然后你也可以看一下WND的屬性,CAPION到底是什么,MINMAXINFO又是什么。

?

這一節最后,我可能會要求你做一些額外的工作:

1.請嘗試除?UI_WNDSTYLE_DIALOG?外的其它窗口創建方式,查看有什么不一樣。

2.XML是怎樣加載的?

3.嘗試添加按鈕,并設置圖片。

?

本節到此結束。

總結

以上是生活随笔為你收集整理的Duilib教程-HelloDuilib及DuiDesigner的简单使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。