小伙伴們有點迫不及待了么,來看一看Hello World吧:
新建一個空的win32項目,新建一個main.cpp文件,將以下代碼復制進去:
#include <windows.h> #include <tchar.h> int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { ::MessageBox(NULL, _T("Hello World !"), NULL, NULL); return 0; }
運行即可看到如下結果:

咦,這不是win32程序么,你小子忽悠我?
~O(∩_∩)O~ 這正是Alberl想要說的:duilib僅僅是一個基於win32的UI庫而已,並不是用了duilib以后,它就不是win32程序了。
很多小伙伴在群里問怎么加托盤,加程序圖標等等,可能覺得duilib應該會像MFC一樣提供很多封裝好的類;或者覺得duilib有實現托盤的功能;或者覺得duilib完全替代了win32和MFC。所以這里Alberl提醒下: duilib並沒有像MFC那樣把所有的東西全包了,它僅僅包裝了UI部分而已,其他的還是需要用win32、MFC的知識,所以除了UI部分,其他的都和duilib木有關系,小伙伴們直接搜索windows相應的關鍵字就行啦。
再次強調:把duilib當作一個類庫用,而不是一個語言、IDE、框架 ~\(^o^)/~
下面我們來看一看duilib的Hello World。
(
注意:
1、本教程使用的是duilib目前最新的代碼,不會下載最新代碼的,請閱讀【
2013 duilib入門簡明教程 -- VS環境配置(2)】
2、編譯錯誤的,說明還沒配置好環境,請閱讀【
2013 duilib入門簡明教程 -- VS環境配置(2)】
3、鑒於許多網友后面有各種小問題,所以建議大家
先下載整個教程的源碼,下載請進【
2013 duilib入門簡明教程 -- 總結 (20)】
)
#pragma once #include <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 #endif 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; }; 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; }
一個Hello World就完成了,是不是很簡單呢^_^
PS:上述代碼除了顯示了文字以外,還有以下特點:
1、鼠標移到客戶區(綠色部分)時,鼠標樣式會變成手型
2、
調整窗口大小以及最大化時,Hello World會自適應窗口的大小,一直都居中
3、如果想改變背景顏色的話,直接調用
SetBkColor就行啦,是不是比win32和MFC方便呢~\(^o^)/~