duilib入门笔记(一)——Hello World

Home / Article MrLee 2015-6-10 5829

关于duilib的介绍就不多讲了,一来不熟,二来小伙伴们想必已经对比了多个界面库,也无需赘述。下面进入正题: 不看广告看疗效! 已有众多知名公司采用duilib做为界面库,如华为网盘、金山快盘、酷我音乐、爱奇艺视频、百度杀毒、百度卫士、百度管家等一系列产品。而duilib自己提供的Demo有QQ、QQ旋风、360等等。下面是一部分截图:



看着上面的界面小伙伴们是不是已经迫不及待了呢?来看一看Hello World吧:新建一个空的win32项目,如图:

QQ截图20150610152708

// MyApp.cpp : 定义应用程序的入口点。
//
#include "stdafx.h"
#include "MyApp.h"
#define S(s) _T(s)			//定义一个宏

int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
	MessageBox(NULL,S("Hello,World!"),S("Title"),MB_OK);
	return 0;
}
运行效果:

QQ截图20150610153219


虽然很丑,但是完成了第一步,接下来我们要开始加载duilib相关文件了,配置这里不多说,如果未配置请参看这篇VS2010 Win32开发应用——Duilib简单配置
在stdafx.h文件中添加以下代码
#include //一定要加此头文件,uirichedit.h 报错:error C2143: 语法错误 : 缺少“;”(在“*”的前面)
#include "DuilibUIlib.h"
using namespace DuiLib;
#ifdef _DEBUG
#pragma comment(lib, "DuiLib_d.lib")//debug
#else
#pragma comment(lib, "DuiLib.lib")//release
#endif
cpp代码
// MyApp.cpp : 定义应用程序的入口点。
//
#include "stdafx.h"
#include "MyApp.h"
#define S(s) _T(s)			//定义一个宏

class CDuiFrameWnd : public CWindowWnd, public INotifyUI
{
public:
	virtual LPCTSTR GetWindowClassName() const { return S("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(S("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, S("DuiLib程序"), UI_WNDSTYLE_FRAME, WS_EX_WINDOWEDGE);
	duiFrame.ShowModal();
	return 0;
}
运行效果

QQ截图20150610154137


第一步就完成了,后面继续学习事件和其它控件,以及皮肤的使用。
工程下载:MyApp
duilib工程:duilibv1.1.7z
如果要发布程序的话,需要附带几个dll库,否则没有安装过运行环境的电脑是跑不起来的。

QQ截图20150610154357

本文链接:https://it72.com:4443/3338.htm

推荐阅读
最新回复 (0)
返回