2013 duilib入门简明教程 -- 第一个程序 Hello World(3)

原文地址为: 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^)/~

 




转载请注明本文地址: 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)