用MFC开发程序的人都知道界面美化是最头疼的问题,最近看了一个个人感觉还不错的皮肤库的使用,学习了一下,顺便把自己的学习作个笔记。
http://www.uieasy.cn/详细了解大家可以登录官方网站了解
工程设置DSkinLite引用方法:
(1)将include与lib文件夹复制到相应的工程目录下
(2)在stdafx.h头文件中添加如下三行代码
//皮肤头文件
#include "..\..\include\dskinlite.h"
#include "..\..\include\dskindef.h"
//皮肤静态库
#pragma comment(lib,"..\\..\\lib\\dskinliteu.lib")
(3)复制相应的DLL目录中的六个DLL文件到EXE文件目录下
dskinlited.dll dskinliteud.dll Microsoft.VC80.DebugCRT.manifest
Microsoft.VC80.DebugMFC.manifest msvcp80d.dll msvcr80d.dll
工程中使用DSkinLite的方法如下:
(1)在工程对应的App文件中InitInstance方法中添加如下方法:
BOOL XXXApp::InitInstance()
{
...省略非DSkinLite库相关代码...
//这里开始添加DSkinLite的代码
BOOL bSucc = dsLoadSkin( _T("DownloadDemo"), LOAD_FROM_FOLDER);
DWORD dw = dsGetLastError();
...省略非DSkinLite库相关代码...
}
int XXXApp::ExitInstance()
{
dsExitSkin();
return CWinApp::ExitInstance();
}
(2)在相应的Dialog文件中找到OnInitDialog函数,在OnInitDialog函数中添加如下代码设置对话框及控件的皮肤:
BOOL XXXDialog::OnInitDialog()
{
...省略非DSkinLite库相关代码...
dsSkinWindow( GetDlgItem(IDC_STATIC_1/*这里是控制ID号*/)->GetSafeHwnd(), SKIN_TYPE_SPLIT_BUTTON, _T("btnNewTask")/*这里是对应控件在XML文件中指定的皮肤名称*/, FALSE);
...省略非DSkinLite库相关代码...
}
*********关于如何自己写符合自己要求的XML文件及DSkinLite详细参阅DSkinLite帮助文档********
总结:
根据文档中的要求,如果有多个xml文件存在,并且相互之间存在先后调用关系的时候,
需要指定一个config.ini文件中来指定XML文件的先后顺序
比如:
[xmlindex]
count = 2
1 = "Skin.xml"
2 = "InheritDemo.xml"
另外在自己写XML文件时有几个注意点:
1)XML编码格式一定是UTF-8编码
2)属性标记是大小写敏感的。
<theme> //这是皮肤XML的根标签