在资源中存储字符串,

时间:2011-06-08 11:10:46

标签: windows string resources

有没有人知道除了字符串表之外的方法来存储资源中的字符串.. 因为我想只存储一个或两个字符串...并避免字符串表,就像我使用FindResource()函数,它将加载整个字符串块

1 个答案:

答案 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);

不要忘记为上述函数调用添加正确的错误处理。