DirectUI 学习笔记2-DUI HellowWorld程序
经过上一章的配置之后,我们有了duilib的环境,现在我们可以开始编写一个DUI程序。
如果你还不会如何下载与配置Duilib,请移步《DirectUI 学习笔记1-源码下载与环境配置》
A:我们新建一个类去继承DUI提供给我们的基类
#include pragma once #include <UIlib.h> //如果你附加目录设置的正确,这里不会找不到 using namespace DuiLib; //下面的预处理指令用来判断是否项目使用了unicode与对应的debug于release的对应lib库 #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 CMyDuiWnd : public CWindowWnd, public INotifyUI { public: CMyDuiWnd() {} ~ CMyDuiWnd() {} //GetWindowClassName是基类的纯虚函数,我们继承后必须实现。 virtual LPCTSTR GetWindowClassName() const { return _T("DUIMainFrame"); } //覆盖基类的虚函数 以下2个都是 virtual void Notify(TNotifyUI& msg) {} virtual LRESULT HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam) { LRESULT lRes = 0; if( uMsg == WM_CREATE ) //如果是窗口创建消息 { //创建一个按钮 CControlUI *pButton = new CButtonUI; pWnd->SetText(_T("Hello World!")); // 设置文字 pWnd->SetBkColor(0xFFFF0000); // 设置灰色背景 m_PaintManager.Init(m_hWnd); m_PaintManager.AttachDialog(pButton); return lRes; } if( m_PaintManager.MessageHandler(uMsg, wParam, lParam, lRes) ) return lRes; return __super::HandleMessage(uMsg, wParam, lParam); }
B:在Main函数中的代码
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { CPaintManagerUI::SetInstance(hInstance);
CMyDuiWnd FrameWnd; FrameWnd(NULL, _T("DirectUI"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE); FrameWnd.ShowModal();
FrameWnd.CenterWindow();
return 0; }
C:运行后的效果