Удаление растрового ресурса в Visual C ++ - PullRequest
0 голосов
/ 18 июля 2011

Я пытаюсь удалить растровое изображение с помощью кода, и у меня возникают проблемы при его выполнении. Прошел через несколько часов тряски головой с гуглом. Вот код:

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, что означает, что обновление не прошло. Есть что-то невероятно простое, что я скучаю?

1 Ответ

0 голосов
/ 20 июля 2011

Хорошо, я понял, что пошло не так. Во-первых, я использовал команду «GetLastError ()», чтобы помочь уменьшить возможности. Это дало мне ошибку 0x57, что означает ERROR_INVALID_PARAMETER.

Когда я экспериментировал больше, мне показалось, что в параметрах языка я указал «MAKELANGID (LANG_NEUTRAL, SUBLANG_NEUTRAL)» вместо «MAKELANGID (LANG_ENGLISH, SUBLANG_ENGLISH_US)». Очевидно, ресурсы заботятся о языке, который вы используете, даже если это что-то вроде растрового изображения, которое не использует язык.

Как только я добавил параметры LANG_ENGLISH, все заработало. Вы можете узнать, какой язык вы используете, проверив текст .rc, который ресурс использует для сборки.,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...