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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

duilib环境配置以及简单入门介绍

發布時間:2024/7/23 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 duilib环境配置以及简单入门介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內容全部為轉載:
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
具體為:

  • 下載duilib-master;
  • 解壓后用VS編譯器編譯一遍,編譯部分參考第一個網址;
  • 配置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的基本框架,下面來總結一下:

  • CPaintManagerUI::SetInstance(hInstance);設置進程的實例句柄,這個值會在注冊窗口類時使用
  • 在CWindowWnd類中由Create函數完成窗口類的創建于注冊,以及窗口的創建工作
  • CWindowWnd類中的ShowWindow函數用于顯示窗口
  • 消息循環由CPaintManagerUI::MessageLoop();代碼完成
  • 最后需要重寫MessageHandle函數用于處理我們感興趣的消息。并且在最后需要調用基類的MessageHandle函數,主要是為了調用DefWindowProc處理我們不感興趣的消息。
  • 總結

    以上是生活随笔為你收集整理的duilib环境配置以及简单入门介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

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