作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试从资源文件中获取 .png 图像。
res.rc
TEST_BKG RC_DATA "img\\mainwnd_bkg.png"
-
main.c
HRSRC hRsrc = FindResource(NULL,(LPCSTR)"TEST_BKG", RT_RCDATA);
但我有 1813 错误:ERROR_RESOURCE_TYPE_NOT_FOUND
<小时/>我创建了新文件并再次尝试使用 BITMAP:
1 BITMAP "img/mainwnd_bkg.bmp"
2 RC_DATA "img/mainwnd_bkg.png"
来源:
int main()
{
HRSRC hRsrc = FindResource(NULL,MAKEINTRESOURCE(1), BITMAP);
if (!hRsrc)
printf ("err");
hRsrc = FindResource(NULL,MAKEINTRESOURCE(2), RT_RCDATA);
if (!hRsrc)
printf ("err2");
getchar();
return 0;
}
我只得到“err2”。
最佳答案
此错误情况意味着您指定的模块中不存在具有该 ID 和类型组合的资源。
最可能的解释是您正在使用定义的 UNICODE
进行编译。因此,FindResource
宏扩展为 FindResourceW
。这可以解释为什么您选择转换 8 位字符串。大概是编译器反对,您决定使用强制转换。
如果是这样的话, Actor 阵容就有问题。您使用的强制转换不会更改字符串的内容,它只是告诉编译器禁止类型检查。实际上,您告诉编译器您正在传递一种类型的数据,而实际上您提供了一种不同类型的数据,这是对编译器撒谎。一般来说,您应该避免强制转换。
通过传递宽字符串来修复代码:
HRSRC hRsrc = FindResource(NULL, L"TEST_BKG", RT_RCDATA);
您可能更愿意明确调用的函数并像这样编写:
HRSRC hRsrc = FindResourceW(NULL, L"TEST_BKG", RT_RCDATA);
其他可能的解释是您没有链接已编译的资源,或者已编译的资源在某种程度上缺少您的 RCDATA
资源,或者提供给 FindResource
的模块句柄是不正确的。您可以使用资源查看器来查看最终可执行文件的内容。
关于c++ - FindResource 1813 错误 RC_DATA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27635494/
我正在尝试从资源文件中获取 .png 图像。 res.rc TEST_BKG RC_DATA "img\\mainwnd_bkg.png" - main.c HRSRC hRsrc =
我是一名优秀的程序员,十分优秀!