如何解决MFC无法找到资源
我正在尝试将VS2005代码移植到VS2017。现在,我收到一个运行时错误消息,
HINSTANCE hInst = AfxFindResourceHandle(lpszResource,RT_DIALOG);
HRSRC hResource = ::FindResource(hInst,lpszResource,RT_DIALOG);
if (hResource == NULL)
{
if (DWORD_PTR(lpszResource) > 0xffff)
TRACE(traceAppMsg,_T("ERROR: Cannot find dialog template named '%Ts'.\n"),lpszResource);
else
TRACE(traceAppMsg,"ERROR: Cannot find dialog template with IDD 0x%04X.\n",LOWORD((DWORD_PTR)lpszResource));
return FALSE;
}
在这里,我将hResource
称为NULL
。
我交叉检查了它在资源文件夹中对应的ID。我可以看到具有ID的对话框已在.rc文件中注册,因此自动生成的Resource.h确实具有该ID。
问题是我的.exe使用具有这些资源的静态lib。我读到必须在configuartion-> Resources中链接.res文件,但是问题是我在该文件夹中没有任何.res文件。我有一个.rc文件,其中包括所有资源,其余都是.bmp文件。
这些Resource生成的标头也是2005版本的,我怀疑我需要为VS的较新版本生成一个新的resource.h文件。
此外,代码中的所有内容都在运行时获取正确的值。它只是找不到资源。我没有资源方面的经验,因此很困惑::FindResources
在哪里试图找到文件以及什么类型的文件。如果要尝试查找具有相应ID的.res文件,那么问题就在于我没有那些.res文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。