У меня есть такой код, как этот
IDB_PNG1 PNG "images\\list-back.png"
HRSRC hrsrc = FindResource(module, MAKEINTRESOURCE(IDB_PNG1), TEXT("PNG"));
это отлично работает,
Но я не могу заставить его работать ни один из вариантов ниже
hrsrc = ::FindResource(module, L"images\\list-back.png", L"PNG");
hrsrc = ::FindResource(module, L"images\\list-back", L"PNG");
hrsrc = ::FindResource(module, L"list-back.png", L"PNG");
hrsrc = ::FindResource(module, L"list-back", L"PNG");
GetlastError возвращает 0x00000716 Указанное имя ресурса не может быть найдено в файле изображения.
Каков правильный формат строки/способ для поиска со строкой?
Изменить:.rc будет сгенерирован и будет содержать файлы .html и .png. Я хочу иметь возможность находить и загружать эти файлы без перекомпиляции exe. Мне нужно как-то идентифицировать в .html, что .png использует, в exe я получаю этот путь /id, чем FindResource и загрузку. Это можно сделать?
Первая запись в строке RCDATA - это имя (или идентификатор). Последняя запись просто "что должен использовать компилятор ресурсов для создания этой записи" - имя не сохраняется в исполняемом файле.
FOO RCDATA "images\\list-back.png"
...
::FindResource(module, L"FOO", RT_RCDATA);
Кроме того, вы можете сохранить ресурс с идентификатором строки, а не с числовым идентификатором, например:
list-back PNG "images\\list-back.png"
Тогда вы действительно можете:
hrsrc = ::FindResource(module, L"list-back", L"PNG");
Это менее эффективно, чем решение, предоставленное Erik, но может быть более управляемым, если вы пытаетесь получить доступ к некоторому ресурсу, скажем, из статической библиотеки, тогда как сам ресурс встраивается в DLL/EXE на более позднем этапе. (Тогда вам не обязательно знать числовой идентификатор, просто согласитесь с символическим именем в ваших модулях)