源码下载地址:https://gitee.com/Ailsc/Duilib
1.使用磁盘中的zip文件
Duilib使用zip需要重写下面两个虚函数:
UILIB_RESOURCETYPE CMainWnd::GetResourceType() const//指定资源类型
{
return UILIB_ZIP;
}
CDuiString CMainWnd::GetZIPFileName() const//指定ZIP文件路径
{
return _T("Skin.zip");
}
2. 使用资源文件中的zip
Duilib使用zip需要重写下面两个虚函数,并且添加资源类型为“ZIPRES”类型的资源
UILIB_RESOURCETYPE CMainWnd::GetResourceType() const
{
return UILIB_ZIPRESOURCE;
}
LPCTSTR CMainWnd::GetResourceID() const
{
return MAKEINTRESOURCE(IDR_ZIPRES_SKIN);
}
注意资源寻找路径
- 资源路径:
GetSkinFolder
+GetSkinFile
- 如下图格式:
如果指定GetSkinFolder
为Skin
,则MainWnd.xml
里面资源文件路径为res\xxx.png
,GetSkinFile
为MainWnd.xml
如果指定GetSkinFolder
为空,则MainWnd.xml
里面资源文件路径为skin\res\xxx.png
,GetSkinFile
为Skin\MainWnd.xml
如果在zip里面加载资源,正确方式res\\xxx.png
,错误方式.\\res\\xxx.png
资源寻找优先级:优先指定目录的资源,之后加载当前目录下的资源
例如当前目录下有一个img/qq.png
,加载的时候首先去指定目录(CPaintManagerUI::GetResourcePath()
+GetSkinFolder
)寻找该文件,如果没找到才在当前目录
寻找该文件。