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



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

// 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;
}
运行效果:

虽然很丑,但是完成了第一步,接下来我们要开始加载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;
}
运行效果

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

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