请教一下,Duilib中换肤的问题。会的可以指导一下吗?感激啊

maya8maya85 发布于 2016/12/28 13:34
阅读 572
收藏 0

项目为win32+duilib写的一个Demo.很简单,两个皮肤的区别就一行文字不一样。

资源都打包到skin.dll里了,duilib.zip和duilib2.zip。但切换没成功。请问谁能说说问题所在。

如果需要源文件,可以加我的Q:578111217,细聊。

切换的函数如下【在网上抄的】:

void ReloadZipResource(int ID)//IDR_ZIPRES2
	{

		HRSRC hResource = FindResource(m_PaintManager.GetResourceDll(), MAKEINTRESOURCE(ID), _T("ZIPRES"));
		if (hResource == NULL)
			return;
		DWORD dwSize = 0;
		HGLOBAL hGlobal = LoadResource(m_PaintManager.GetResourceDll(), hResource);
		if (hGlobal == NULL)
		{
#if defined(WIN32) && !defined(UNDER_CE)
			::FreeResource(hResource);
#endif
			return;
		}
		dwSize = SizeofResource(m_PaintManager.GetResourceDll(), hResource);
		if (dwSize == 0)
			return;
		m_lpResourceZIPBuffer = new BYTE[dwSize];
		if (m_lpResourceZIPBuffer != NULL)
		{
			CopyMemory(m_lpResourceZIPBuffer, (LPBYTE)::LockResource(hGlobal), dwSize);
		}
#if defined(WIN32) && !defined(UNDER_CE)
		FreeResource(hResource);
#endif
		CPaintManagerUI::SetResourceZip(m_lpResourceZIPBuffer, dwSize);

		CPaintManagerUI::ReloadSkin();
	}



加载中
0
maya8maya85
maya8maya85

没人知道吗?


0
S
Seast

ReloadSkin实际只会更新图片,字体颜色等写在xml里面的,换肤后没有重新加载xml是不会变的

返回顶部
顶部