有没有人知道除了字符串表之外的方法来存储资源中的字符串.. 因为我想只存储一个或两个字符串...并避免字符串表,就像我使用FindResource()函数,它将加载整个字符串块
答案 0 :(得分:1)
将每个字符串分别存储为二进制资源。在这种情况下,您可以按ID分别加载每个字符串。
下面的代码将从“RES_SECTION”中提取带有“ResId”的资源,其中 RES_SECTION是用户在添加资源时定义的自定义部分,以及 ResId是资源的id。
HMODULE hModule = NULL;
HGLOBAL hResource = NULL;
HRSRC hResInfo = NULL;
LPVOID tmpData = NULL;
DWORD tmpDataSize = 0;
/* find and get resource handle */
hResInfo = FindResource(hModule, MAKEINTRESOURCE(ResId), RES_SECTION);
/* loads resource into global memory. */
hResource = LoadResource(hModule, hResInfo);
/* get a pointer to the loaded resource */
tmpData = LockResource(hResource);
/* determine the size of the resource */
tmpDataSize = SizeofResource(hModule, hResInfo);
unsigned char * str = new unsigned char[tmpDataSize];
memcpy_s(str, tmpDataSize, tmpData, tmpDataSize);
不要忘记为上述函数调用添加正确的错误处理。