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:运行后的效果

 

 

 

posted @ 2015-10-31 20:25  FR1end  阅读(352)  评论(0编辑  收藏  举报