相关疑难解决方法(0)

使用UpdateResource更新字符串表

我在这里问了这个问题 - 通过UpdateResource更新STRING TABLE(添加多个字符串)

现在我再问一遍,因为这次我可以在这个问题上添加更多细节.

过去一天我一直在尝试这个,或者说没有真正有用的东西.我希望结果是这样的(我在MSVS中手动添加了字符串):正如您所看到的,多个条目,它是"干净的",可以通过程序轻松访问! 在此输入图像描述

现在,我的来源:

wstring buffer[5] = {L" Meow",L" I",L" Am",L" A",L" Dinosaur"}; // ignore the string
if (HANDLE hRes = BeginUpdateResource("Output.exe",TRUE))
{
    for (int i = 0; i < 5; i++)
    {
    wchar_t * temp;
    temp = new wchar_t[(buffer[i].length()+1)];
    wcscpy(temp,buffer[i].c_str());
    wcout << temp << endl;
    UpdateResource(hRes,RT_STRING,MAKEINTRESOURCE(1),MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
                   temp, 48); //buffer[i].length()+1
    delete[] temp;
    }
    EndUpdateResource(hRes,FALSE);

}
Run Code Online (Sandbox Code Playgroud)

生产: 在此输入图像描述

这是错的,因为它似乎只是将最后一个字符串添加到表中,而不是之前的字符串!

当我尝试修改源代码以使MAKEINTRESOURCE(1)现在为"MAKEINTRESOURCE(i)"时,结果如下图所示: http://gyazo.com/5fa7a6682d5da2def4683227533b2755.png http://gyazo.com/e77f6e90cb3dbfe21d07b3d55c931acb.png http://gyazo.com/2e632768e2cdfcea8ab9cd08caea9cc8.png http://gyazo.com/f9dcd68c671923d8faefce76877bc3be.png

成功的事实是它添加了所有字符串,但它似乎创建了各种字符串表,这不是所期望的.虽然我注意到每张照片中的ID增加了16,这可能解释了一些问题.基本上,我希望字符串格式化为第一张图片(带有多个字符串),但不知道如何做到这一点.

谢谢您的帮助.

c c++ windows resources winapi

8
推荐指数
1
解决办法
4450
查看次数

C ++,Win32 LoadString包装器

我想对LoadString Win32函数的此包装程序有您的意见。

int LoadWString( HINSTANCE hInstance_In, UINT uID_In, std::wstring &str_Out ){
    return LoadStringW( hInstance_In, uID_In, (LPWSTR)str_Out.c_str(), (int)str_Out.max_size());
}
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,问题更多是关于使用字符串max_size属性作为缓冲区大小,这是否有一些负面的缺点?

c++ winapi

0
推荐指数
1
解决办法
756
查看次数

标签 统计

c++ ×2

winapi ×2

c ×1

resources ×1

windows ×1