我有一段像这样的代码
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并加载。可以这样做吗?
答案 0 :(得分:4)
RCDATA行中的第一个条目是名称(或ID)。最后一个条目只是“资源编译器应该使用什么来创建此条目” - 名称不存储在可执行文件中。
FOO RCDATA "images\\list-back.png"
...
::FindResource(module, L"FOO", RT_RCDATA);
答案 1 :(得分:0)
此外,您可以使用字符串ID而不是数字ID存储资源,如下所示:
list-back PNG "images\\list-back.png"
然后你确实可以这样做:
hrsrc = ::FindResource(module, L"list-back", L"PNG");
这比Erik提供的解决方案效率低,但如果您尝试从静态库访问某些资源,则可以更易于管理,而资源本身会在稍后阶段嵌入到DLL / EXE中。 (您不必知道数字ID,只需同意模块中的符号名称)