第一步:创建Windows 桌面向导
1、解决方案和项目不放在同一目录中

2、不勾选任何选项

3、删除多余代码只保留如下代码
#include "framework.h"
#include "DuilibDemo.h"
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);
// TODO: 在此处放置代码。
return 0;
}
第二步:配置项目环境
1、创建bin/libs/kits/tmp目录

2、将刚才下好的NIM_Duilib中的base/build/duilib 拷贝至kits文件中

3、将base项目和duilib项目加入到我们的解决方案中


4、配置base项目和duilib项目的设置
a. 输出目录改为刚刚的libs目录路径
b. 中间目录改为刚刚的tmp目录路径
c. Windows SDK选择自己的版本
d. 平台工具集要和自己的项目一致

5、配置自己的项目
a. 输出路径改为bin目录路径
b. 平台工具集要和base项目、duilib项目一致

6、将base项目和duilib项目引入我们的项目中


7、将kits文件加入我们项目的包含路径中

8、设置 Debug 模式下运行库为 多线程调试(/MTd)

9、设置 Release 模式下运行库为 多线程(/MT)

10、在我们项目中的 framework.h 文件中添加如下代码
// base 头文件
#include "base/base.h"
// duilib 头文件
#include "duilib/UIlib.h"

11、在wWinMain函数上添加 ThreadId 枚举类型
enum ThreadId
{
kThreadUI
};

第三步:创建一个窗口
1、从NIM_Duilib项目中的bin目录拷贝resources文件到我们的bin路径下


2、将 NIM_Duilib_Framework-master\examples\basic 路径下的 basic_form.h 文件和 basic_form.cpp 文件拷贝到我们的项目中


3、将 basic_form.h 文件和 basic_form.cpp 文件添加至我们的项目中

4、在wWinMain的头文件中加入如下代码
class MainThread : public nbase::FrameworkThread
{
public:
MainThread() : nbase::FrameworkThread("MainThread") {}
virtual ~MainThread() {}
private:
/**
* 虚函数,初始化主线程
* @return void 无返回值
*/
virtual void Init() override;
/**
* 虚函数,主线程退出时,做一些清理工作
* @return void 无返回值
*/
virtual void Cleanup() override;
};

5、在wWinMain函数中加入如下代码
// 创建主线程
MainThread thread;
// 执行主线程循环
thread.RunOnCurrentThreadWithLoop(nbase::MessageLoop::kUIMessageLoop);

6、实例化MainThread类中的 Init() 函数和 Cleanup() 函数
7、在 Init() 函数中加入如下代码
nbase::ThreadManager::RegisterThread(kThreadUI);
// 获取资源路径,初始化全局参数
// 默认皮肤使用 resources\\themes\\default
// 默认语言使用 resources\\lang\\zh_CN
// 如需修改请指定 Startup 最后两个参数
std::wstring theme_dir = nbase::win32::GetCurrentModuleDirectory();
ui::GlobalManager::Startup(theme_dir + L"resources\\", ui::CreateControlCallback(), false);

8、在 Cleanup() 函数中加入如下代码
ui::GlobalManager::Shutdown();
SetThreadWasQuitProperly(true);
nbase::ThreadManager::UnregisterThread();

9、引入头文件 basic_form.h 并在 Init() 函数添加如下代码
// 创建一个默认带有阴影的居中窗口
BasicForm* window = new BasicForm();
window->Create(NULL, BasicForm::kClassName.c_str(), WS_OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX, 0);
window->CenterWindow();
window->ShowWindow();

10、修改 basic_form.cpp 文件中的头文件 stdafx.h 改为我们的 framework.h
11、至此项目配置成功

Comments