自定义资源
自定义资源的语法格式为
资源ID 自定义资源类型名 文件路径
添加自定义资源的步骤如下
1.按上语法格式,在rc文件中添加语句。
2.在resource.h头文件中,定义资源ID。
3.使用FindResoource等API,使用自定义资源。
举例:添加自定义资源,资源名为XML。并在IDE 输出窗口中输出XML语句
1.打开rc文件,添加如入语句
IDR_XML1 XML "skins//def_skin.xml"
IDR_XML5 XML "skins//dlg_main.xml
def_skin.xml的文件内容为
<skins>
< /skins>
2.打开resource.h头文件,添加如下语句
#define IDR_XML2 105
#define IDR_XML1 106
#define IDR_XML5 107
3.编译。我们先看一下,XML类型的自定义资源是否嵌入到exe中了
例如:在资源列表中可看到(此处例举不是xML类型资源)
定义资源文件
资源文件
xml资源已经嵌入到exe中了。
4.使用嵌入的XML资源。
代码如下
- staticBOOL LoadEmbedResource()
- {
- CStringA strRet;
- //#define IDR_XML1 106
- HRSRC hRsrc = ::FindResource(NULL, MAKEINTRESOURCE(106),L"XML");
- if (NULL == hRsrc)
- return FALSE;
- DWORD dwSize = ::SizeofResource(NULL, hRsrc);
- if (0 == dwSize)
- return FALSE;
- HGLOBAL hGlobal = ::LoadResource(NULL, hRsrc);
- if (NULL == hGlobal)
- return FALSE;
- LPVOID pBuffer = ::LockResource(hGlobal);
- if (NULL == pBuffer)
- return FALSE;
- memcpy(strRet.GetBuffer(dwSize + 1), pBuffer, dwSize);
- OutputDebugStringA((LPCSTR)strRet);
- strRet.ReleaseBuffer(dwSize);
- ::FreeResource(hGlobal);
- return TRUE;
- }
输出结果为
<skins>
< /skins>
其实,内嵌资源就是pe 文件结构中的一个段,如果想更清楚的了解exe资源问题,请参看pe文件结构

浙公网安备 33010602011771号