我正在尝试通过代码删除资源位图并且无法执行此操作。经历了几个小时与谷歌的联合攻击。这是代码:
int result;
HANDLE h;
h = BeginUpdateResource(L"C:\\Users\\Steve\\Desktop\\stub.exe", FALSE);
result = UpdateResource(h, RT_BITMAP, MAKEINTRESOURCE(IDB_BITMAP2), MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), NULL, 0);
EndUpdateResource(h, FALSE);
当我调试时,变量“result”最终为NULL,这意味着更新没有通过。有什么东西让我很遗憾吗?
答案 0 :(得分:0)
好的,我弄清楚出了什么问题。首先,我使用“GetLastError()”命令来帮助排除可能性。它给了我一个错误0x57,这意味着ERROR_INVALID_PARAMETER。
当我进行更多实验时,似乎在语言参数中,我列出了“MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL)”而不是“MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US)”。显然,资源关心你正在使用的语言,即使它是一个不使用语言的位图。
一旦我输入了LANG_ENGLISH参数,它就有效了。您可以通过检查资源用于构建的.rc文本来找出您正在使用的语言。