2013 duilib入門簡明教程 -- 第一個程序 Hello World(3)


    小伙伴們有點迫不及待了么,來看一看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^)/~

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM