在C++中以programmaticaly方式加载资源作为字节数组

Rom*_*omz 2 c++ winapi visual-studio-2010

这里C#的问题相同:将资源加载为字节数组programmaticaly

所以我有一个资源(只是二进制文件 - 用户数据,并不重要).我需要一个指向表示此资源的字节数组的指针,该怎么做?资源位于vs2010的资源文件中(win32控制台项目).我想我需要使用FindResource,LoadResourceLockResourceWINAPI的功能.

rmh*_*tog 6

要获取资源的字节信息,第一步是使用FindResourceFindResourceEx获取资源的句柄.然后,使用LoadResource加载资源 .最后,使用LockResource获取数据的地址并从该点访问SizeofResource字节.以下示例说明了该过程:

HMODULE hModule = GetModuleHandle(NULL); // get the handle to the current module (the executable file)
HRSRC hResource = FindResource(hModule, MAKEINTRESOURCE(RESOURCE_ID), RESOURCE_TYPE); // substitute RESOURCE_ID and RESOURCE_TYPE.
HGLOBAL hMemory = LoadResource(hModule, hResource);
DWORD dwSize = SizeofResource(hModule, hResource);
LPVOID lpAddress = LockResource(hMemory);

char *bytes = new char[dwSize];
memcpy(bytes, lpAddress, dwSize);
Run Code Online (Sandbox Code Playgroud)

为简洁起见,当然会省略错误处理,您应该检查每个调用的返回值.