在“添加资源”对话框中单击“导入”,选择“所有文件(.)”,这样您就可以导入任何类型的文件,然后只需在那里选择您想要的文件。当弹出“自定义资源类型”对话框时,在“资源类型”字段中输入 RCDATA。
如果打开 .rc 文件,您将看到类似以下内容:
/////////////////////////////////////////////////////////////////////////////
//
// RCDATA
//
IDR_RCDATA1 RCDATA "myfile.whatever"
它将生成带有以下行的resource.h:
#define IDR_RCDATA1 101
在代码中,您可以像这样访问它:
#include "resource.h"
#include <windows.h>
int main(int argc, char* argv[])
{
HRSRC myResource = ::FindResource(NULL, MAKEINTRESOURCE(IDR_RCDATA1), RT_RCDATA);
HGLOBAL myResourceData = ::LoadResource(NULL, myResource);
void* pMyBinaryData = ::LockResource(myResourceData);
return 0;
}
其中 pMyBinaryData 是指向该可执行文件的第一个字节的指针。欲了解更多信息,请访问资源功能 http://msdn.microsoft.com/en-us/library/ff468902(v=vs.85).aspx
下面是如何在磁盘上保存这样的二进制资源的示例:
#include "resource.h"
#include <windows.h>
#include <fstream>
int main(int argc, char* argv[])
{
HRSRC myResource = ::FindResource(NULL, MAKEINTRESOURCE(IDR_RCDATA1), RT_RCDATA);
unsigned int myResourceSize = ::SizeofResource(NULL, myResource);
HGLOBAL myResourceData = ::LoadResource(NULL, myResource);
void* pMyBinaryData = ::LockResource(myResourceData);
std::ofstream f("C:\\x.bin", std::ios::out | std::ios::binary);
f.write((char*)pMyBinaryData, myResourceSize);
f.close();
return 0;
}
当您使用此类资源构建项目时,该资源将成为您的程序(dll)的一部分。