下面是我从资源加载文件的代码
void LoadFileInResource(int name, int type, DWORD& size, const char*& data)
{
HMODULE handle = ::GetModuleHandle(NULL);
HRSRC rc = ::FindResource(handle, MAKEINTRESOURCE(name),MAKEINTRESOURCE(type));
HGLOBAL rcData = ::LoadResource(handle, rc);
size = ::SizeofResource(handle, rc);
data = static_cast<const char*>(::LockResource(rcData));
}
如果只是一个应用程序,则此代码可以完美地工作。当将相同的代码用作DLL时,我在rc中得到了空值,这是在FindResource之后发布的。
我已经在资源丰富的文件中定义了符号,如下所示:
#define TEXTFILE 256
#define IDR_MYTEXTFILE 105
我还需要添加的文件在rc文件中定义:
IDR_MYTEXTFILE TEXTFILE "C:/Docs/Lib.XML"
正如我之前提到的,当该代码将其应用程序转换为DLL时,它可以完美地工作。
LoadFileInResource函数的调用如下:
LoadFileInResource(IDR_MYTEXTFILE, TEXTFILE, size, data);