VC++FindResource无法加载HTML文件的处理两种方案

                                                                                              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小时,看到本文得到帮助的朋友希望您点个暂,您的肯定是我前进的动力,大家一起进步。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

界忆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值