I am trying to delete a resource bitmap through code and am having trouble doing it. Went through several hours of headbanging with google. Here is the code:
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);
When I debug, variable “result” ends up being NULL which means that the update didn’t go through. Is there something incredibly basic that I’m missing?
Ok, I figured out what went wrong. First off, I used the “GetLastError()” command to help widdle down the possibilities. It gave me an error 0x57 which means ERROR_INVALID_PARAMETER.
When I experimented more, it seems that in the language paramters, I listed “MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL)” instead of “MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)”. Apparently, resources care about the language you are using even if it’s something like a bitmap which doesn’t use language.
Once I put in LANG_ENGLISH paramters, it worked. You can find out what language you are using by inspecting the text of the .rc that the resource is using to build.,