VC++FindResource无法加载HTML文件的处理两种方案
笔者由于最近有需要进行vc工程加载资源文件html文件,然而一直出现资源加载不成功:
FindResource返回值一直空:代码如下:
AFX_MANAGE_STATE(AfxGetStaticModuleState());
HINSTANCE hInst = AfxGetResourceHandle();
HRSRC hrsc = FindResource(hInst,MAKEINTRESOURCE(IDR_LOGIN),TEXT("HTML"));
if (!hrsc)
{
int err = GetLastError();//
//print("错误代码:%d", err);
}
HGLOBAL hG = LoadResource(hInst, hrsc);
if (!hG)
{
int err = GetLastError();//
//print("错误代码:%d", err);
}
DWORD dwSize = SizeofResource(hInst, hrsc);
if (!dwSize)
{
int err = GetLastError();//
//print("错误代码:%d", err);
}
hrsc这边就是一直为空,获取错误代码也是1813,应该很多人和我碰到情况一样:
解决方案有二:
一:修改我们资源文件名,加载到其他名称去具体如下:
1:如图在工程的资源视图右键点击工程中的.rc选添加资源:
2:在如图框中选取导入:
3:将修改好的文件导入(注意:不能以html或htm类型否则你文件自动导入到HTML类型中这种方法你无法使用,本文示例为js):
4:如图所示:自己定义一个js资源导入
5:得到资源如图:
6:代码修改如下:
AFX_MANAGE_STATE(AfxGetStaticModuleState());
HINSTANCE hInst = AfxGetResourceHandle();
HRSRC hrsc = FindResource(hInst,MAKEINTRESOURCE(IDR_JS1),TEXT("js"));
if (!hrsc)
{
int err = GetLastError();//
//print("错误代码:%d", err);
}
HGLOBAL hG = LoadResource(hInst, hrsc);
if (!hG)
{
int err = GetLastError();//
//print("错误代码:%d", err);
}
DWORD dwSize = SizeofResource(hInst, hrsc);
if (!dwSize)
{
int err = GetLastError();//
//print("错误代码:%d", err);
}
7:运行成功。
总结第一种方法就是这样的必须修改文件类型,还要设置自定义,导入时候多了一步,还要修改文件,但是总能解决我们眼前问题。
还有更优雅的解决问题的第二种方案,供有需要和我原来一样疑惑的人参考:
1:导入html资源文件如图:
结果得到( IDR_LOGIN我是自己修改了下,各位可以更据实际需要进行设置):
2:修改一下代码如下:
AFX_MANAGE_STATE(AfxGetStaticModuleState());
HINSTANCE hInst = AfxGetResourceHandle();
HRSRC hrsc = FindResource(hInst, MAKEINTRESOURCE(IDR_LOGIN), MAKEINTRESOURCE(RT_HTML));
if (!hrsc)
{
int err = GetLastError();//
//print("错误代码:%d", err);
}
HGLOBAL hG = LoadResource(hInst, hrsc);
if (!hG)
{
int err = GetLastError();//
//print("错误代码:%d", err);
}
DWORD dwSize = SizeofResource(hInst, hrsc);
if (!dwSize)
{
int err = GetLastError();//
//print("错误代码:%d", err);
}
wkeNetSetData(
job,
const_cast<char *>((char *)hG),
dwSize);
运行结果正常了。
原来只需要修改我们最后一个参数就可以了,别被错误代码给带歪了。
总结:
笔者在尝试使用这个功能也是用了三天,途中遇到各种问题,以前有的代码都丢光了,只好各种百度,各种坑,总算把坑踩过了。写这篇文章目的有二个:
1:保留一下经验,便于以后资料丢失。
2:希望能帮助到和我一样碰到问题的人,文章5分钟看完,码字2小时,看到本文得到帮助的朋友希望您点个暂,您的肯定是我前进的动力,大家一起进步。