2010-06-11 70 views

回答

11

这很简单:在你的解决方案中,切换到资源视图,右键点击你的RC文件,选择“添加资源”,点击“导入”,选择“所有文件”,然后打开你想要的文件。系统会提示您输入自定义资源类型。例如输入“TEXT”。

您现在可以加载自定义资源这样的:

HRSRC hRes = FindResource(GetModuleHandle(NULL), MAKEINTRESOURCE(IDR_TEXT1), _T("TEXT")); 
DWORD dwSize = SizeofResource(GetModuleHandle(NULL), hRes); 
HGLOBAL hGlob = LoadResource(GetModuleHandle(NULL), hRes); 
const BYTE* pData = reinterpret_cast<const BYTE*>(::LockResource(hGlob)); 

你不需要解锁或免费的资源,所以这个代码可以精确地用作无需任何额外调用编写的。当程序退出时,资源将被释放。

+0

AfxGetResourceHandle仅在MFC中可用。任何想法,我可以在win32中使用哪个API? 我正在创建一个exe文件,并且所有资源都在该exe文件中。 – anand 2010-06-11 15:18:59

+0

使用GetModuleHandle(NULL)。相应地更改了我的答案。 – humbagumba 2010-06-11 15:33:38

+1

GetModuleHandle(NULL)适用于EXE资源,但应为位于其中的资源提供DLL模块句柄。并且不要忘记null在字符串中给出可能的垃圾字符后终止字符串。 – bvj 2014-09-01 05:27:26

相关问题