duilib示例项目下载(0积分下载)
1.创建项目目录
在桌面上新建一个文件夹 (MyDuilib),用来做我们项目的根目录。
2.创建一个Win32项目
1.打开VS2013,新建一个 Win32项目,项目目录选择上一步创建的文件夹 (MyDuilib) ,项目配置选择 Windows 应用程序,点击完成即可。
2.在解决方案管理器里找到我们刚才创建的DuilibDemo项目,打开DuilibDemo.cpp
,保留_tWinMain
函数,把其它代码删掉,删除完毕留下的代码如下(可直接复制)
#include "stdafx.h"
#include "DuilibDemo.h"
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPTSTR lpCmdLine,
_In_ int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
return (int) 0;
}
此时编译运行会发现项目一闪而过
3.引入配置duilib库
1.将duilib库整个文件夹复制到项目同级目录下(即MyDuilib)
2.在项目同级目录下(MyDuilib)创建一个文件夹(Lib),将Duilib_d.exp
和Duilib_d.lib
复制到Lib下
3.在解决方案管理器里打开StdAfx.h
,包含duilib库头文件,引入命名空间,导入lib库
// 包含库头文件
#include "../../Duilib/UILib.h"
// 引入命名空间
using namespace DuiLib;
// 导入lib库
#ifndef _DEBUG
// Release版本的库
#pragma comment(lib, "..\\..\\Lib\\Duilib.lib")
#else
// Debug版本的库
#pragma comment(lib, "..\\..\\Lib\\Duilib_d.lib")
#endif
4.在解决方案管理器里打开DuilibDemo.cpp
,初始化duilib库:配置duilib管理器,设置资源路径,启动duilib消息循环
同时在执行目录(DuilibDemo项目文件夹)下的Debug下新建一个Skin文件夹 (资源路径)
// 程序实例
CPaintManagerUI::SetInstance(hInstance);
// 配置资源路径
// 资源类型
CPaintManagerUI::SetResourceType(UILIB_FILE);
// 资源路径:执行程序同目录的Skin文件夹下
// CPaintManagerUI::GetInstancePath() 执行程序目录
CDuiString sResourcePath;
sResourcePath.Format(_T("%sSkin"), CPaintManagerUI::GetInstancePath());
CPaintManagerUI::SetResourcePath(sResourcePath);
// 启动消息循环
CPaintManagerUI::MessageLoop();
此时初始化完成,尝试运行一下程序,会提示缺少Duilib_d.dll
。
5.把duilib库生产的Duilib_d.dll
,复制到例子执行目录(DuilibDemo项目文件夹)下的Debug下。
此时再运行,程序正常运行,没有显示也没有退出,因为我们还没有创建窗口。
4.创建自己的duilib窗口类
1.在项目DuilibDemo上右击 -> 添加 -> 添加类MyMainWnd
,这里的类需要继承基类WindowImplBase
,并重写WindowImplBase
中的三个函数:
GetSkinFile
:返回窗口皮肤文件名称(导入xml页面)
GetWindowClassName
:返回窗口类名
Notify
:事件监听
打开MyMainWnd.h
,写入以下代码
#pragma once
class MyMainWnd :public WindowImplBase, public CWebBrowserEventHandler
{
public:
MyMainWnd();
~MyMainWnd();
virtual CDuiString GetSkinFile();
virtual LPCTSTR GetWindowClassName(void) const;
virtual void Notify(TNotifyUI& msg);
};
打开MyMainWnd.cpp
,写入以下代码
5.从主函数入口打开窗口
在解决方案管理器里打开DuilibDemo.cpp
,写入以下代码并添加头文件。
MyMainWnd* pMainWnd = new MyMainWnd();
// 创建窗口
pMainWnd->Create(NULL, _T("LoveDuilib"), WS_POPUP | WS_VISIBLE, 0);
// 窗口居中显示
pMainWnd->CenterWindow();
此时运行运行程序会提示缺少xml文件
6.创建xml文件
项目右键 -> 添加 -> 添加新项main.xml
,记得放在Skin文件夹中
复制一份简单的xml代码到新建的main.xml
中
运行程序
点击关闭窗口后窗口关闭了,但程序还在运行,需要添加监听事件来终止程序。
7.添加监听事件,关闭窗口
在MyMainWnd.cpp
中的Notify
函数里写入以下代码。
// 消息类型
if (msg.sType == _T("click")) {
// 控件名称
CDuiString sName = msg.pSender->GetName();
if (sName == _T("closebtn")) {
Close(IDOK);
// 如果不加这句,窗口关闭了,但程序不会退出
PostQuitMessage(0);
return;
}
}
WindowImplBase::Notify(msg);
此时运行程序可以正常启动,点击按钮也可以正常关闭。
本文章改自《duilib入门到精通》- 如何新建一个duilib项目。