环境
VS版本:VS2013
概述
上一篇 【Duilib】入门 ,简单介绍了Duilib库的使用,这一篇测试一下通过xml布局界面。
步骤
1、创建工程
以 Win32\Win32项目 为模板创建TestByXml工程,步骤与上一篇基本一致。
2、创建MainWndFrame,这个可以理解为对话框(类似MFC的CDialog)
声明
class MainWndFrame : public WindowImplBase
{
protected:
virtual CDuiString GetSkinFolder() override;
virtual CDuiString GetSkinFile() override;
virtual LPCTSTR GetWindowClassName(void) const override;
public:
static const LPCTSTR kClassName;
static const LPCTSTR kMainWndFrame;
};
定义
DuiLib::CDuiString MainWndFrame::GetSkinFolder()
{
// GetInstancePath 接口返回默认的皮肤文件位置
// 在 main 函数中我们可以通过 SetResourcePath 来设置路径
return m_PaintManager.GetInstancePath();
}
DuiLib::CDuiString MainWndFrame::GetSkinFile()
{
// 成员变量定义的皮肤文件名
return kMainWndFrame;
}
LPCTSTR MainWndFrame::GetWindowClassName(void) const
{
// 成员变量定义的窗口 class name
return kClassName;
}
const LPCTSTR MainWndFrame::kClassName = _T("main_wnd_frame");
const LPCTSTR MainWndFrame::kMainWndFrame = _T("main_wnd_frame.xml");
3、在Main函数中调用。
微软给的框架代码裁剪掉。
/*
// TODO: 在此放置代码。
MSG msg;
HACCEL hAccelTable;
// 初始化全局字符串
LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
LoadString(hInstance, IDC_TESTBYXML, szWindowClass, MAX_LOADSTRING);
MyRegisterClass(hInstance);
// 执行应用程序初始化:
if (!InitInstance (hInstance, nCmdShow))
{
return FALSE;
}
hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_TESTBYXML));
// 主消息循环:
while (GetMessage(&msg, NULL, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
return (int) msg.wParam;
*/
增加Duilib的调用
// 设置窗口关联的实例
CPaintManagerUI::SetInstance(hInstance);
// 设置皮肤的默认路径
CPaintManagerUI::SetCurrentPath(CPaintManagerUI::GetInstancePath());
CPaintManagerUI::SetResourcePath(_T("theme"));
// 创建窗口
MainWndFrame* pMainWndFrame = new MainWndFrame;
pMainWndFrame->Create(nullptr, MainWndFrame::kClassName, UI_WNDSTYLE_DIALOG, 0);
pMainWndFrame->CenterWindow();
pMainWndFrame->ShowWindow();
CPaintManagerUI::MessageLoop();
if (nullptr != pMainWndFrame)
{
delete pMainWndFrame;
}
return 0;
4、在编译后生成exe平级目录创建theme文件夹,文件夹内创建文件main_wnd_frame.xml,文件格式UTF-8。
<?xml version="1.0" encoding="UTF-8"?>
<Window size="640,480" caption="0,0,0,35">
<VerticalLayout>
<HorizontalLayout bkcolor="#FFFFFFFF"/>
<HorizontalLayout bkcolor="#FFFFFFFF">
<Button text="Hello DuiLib" bkcolor="#FF1296DB"/>
</HorizontalLayout>
<HorizontalLayout bkcolor="#FFFFFFFF"/>
</VerticalLayout>
</Window>
5、效果如下
代码下载:https://download.csdn.net/download/sunriver2000/87938141