【旧资料整理】MFC--6小时尝试,html资源终于成功引用exe内部bmp资源

资料时间:2009-12-02之前

分享时间:2009-12-02到百度空间,空间关闭,重新整理


先把解决办法放在上面,那段漫长的痛苦的探索过程写在后面吧:

 

html资源引用exe内部bmp资源方法:

        1.将html加载到资源中,html在exe中的组织形式就是在同一目录,可以直接互相引用.格式为"ID".ID是html资源的id,不能是文件名.

        2.将bmp加载到资源中.bmp和html不是同一类型,也不在同一目录,类型标识是2.

网页中引用bmp时用"../2/ID"形式.id是bmp资源的id,同样不是文件名.


下面对我这段漫长的探索过程发发牢骚吧: 

       今天做扫雷的帮助文件,打算以网页形式显示在窗口.为了让最终的作品只有一个文件,所有用到的文件都导入到资源,链接后会整合到exe文件中.

       上网查,搜了好大一会找到的结果多是添加CHtmlCtrl控制ChtmlView,这根本不符合我的情况,因为我只是想显示一个固定的网页文件,没有必要弄那么复杂.

        没办法了,还是靠自己吧.查看msdn,看了一会英文,实在是看不下去.只得再想别的办法了.回头看自己的工程目录,发现mfc自动生成的view类和自 己添加的view类不一样.这下启发了我.于是自己新建个工程,向导过程将view类继承CHtmlView,运行后发现它恰好打开了一个网页.回头看代 码,发现它在OnInitialUpdate()中调用了ONavigate2().这下好了,模仿着做吧.重 截虚函数OnInitialUpdate(),调用ONavigate2().查看msdn中ONavigate2()的介绍,又有问题了.这个函数是打开网址的,我要将html加载到资源中,肯定行不通了.上网查了会怎么加载html资源,又没有结果,没办法,回到msdn.仔细想想,既然 ONavigate2()是按路径加载网页,那它所属的一类函数肯定是和加载网页有关了,看看此类型中的其它的函数,果然发现了 LoadFromResource().不用多看介绍了,从字面意思也能知道找对了.调用,成功加载,显示html资源文件.

       旧问题刚解决,新问题又来了.加载到到exe里面的网页地址肯定和普通文件格式不一样.网页里面的图片格式失效了.继续上网查,大部分解决办法都是将图片以html格式加载到资源,这样它就和html资源文件在同一目录了.并在html文件头部加入<BASE url ="res://ShowHtml.exe/about.htm">语句指定文件当前路径.这肯定不是我想要的了,我是要对已经加载的bmp资源做 说明,如果再以html格式加载一份,太浪费资源了而且ShowHtml.exe是文件名,用户可能会更改的,这个不能固定.上网查肯定找不到办法了,自 己尝试着解决吧.

       先解决当前路径说明这个问题.html文件中的变量立马想到了javascript.参考着资料兼上网查找,很容易就写出了获得文件当前路径的代码,加到了html文件开头.

      接着解决引用资源中的bmp问题.上网查沾边的结果都没有,自己尝试吧.先加载一个html资源,再在网页中加个链接,链接到已加载的html中.运行程 序,成功打开.说明这两个文件是在一起的.查看属性,惊奇发现它们的路径就是"文件名.exe/id数值 " 格式.这下好了,将图片的路径改为对应的id数值,测试,结果不对.马上想到它们是不在同一目录的.上网查资源的组织格式,还是没有结果.再靠自己一次 吧.看下vc中的资源组织格式,很有逻辑.猜想exe中也是这样组织的吧.将图片的地址改成"../Bitmap/ID"格式,测试,不对.本来也没对这 个成功的结果抱多大希望,exe是二进制的,用字符串表示路径肯定行不通.哎?对了,字符串不行,二进制表示呗.可是微软肯定没那么笨直接把字符串转换成 二进制,肯定是用一组无符号整数区分资源格式的.bmp对应的整数是多少呢?

      上网查,更是没沾边的.但也发现了一个查看exe里资源的工具.下载.一连点了4个链接,自动打开了3个网游广告,安装了一个网络电视软件,添加了一个网站快捷方式,360了拦下了一个主页篡改 ,终于点到了软件的下载地址了.这个破网站,气死我了.

       运行软件,又白忙活了,软件自动把资源类型转义成字符串了,和vc没啥区别.只是html资源对应23.虽然收获渺茫,但是大有启发.肯定是前几个资源太 常见了,它转义,html资源不常见,它就没转义.所以bmp对应的类型标识肯定比23小.一个个试吧.先测试下23猜的对不对.将链接到第二个html 的链接改成"../23/*.html"格式,运行,点开.ok,地址变成"RichMIne.exe/23.*html"格式了.接着就猜bmp的标 识.从后向前,22,21,20都不是.从头向后,0,1也都不是.有点怀疑自己的猜想了.没办法,写一个html文件,从2到20都全写进去,运行.哈 哈,图片出现了,还竟然是第一个.我的天啊,太气人了吧,再多试一个不就出来了吗.

调整代码,运行,确实成功了.不过有个疑问,.exe后面的路径部分已经是相对的了,html前面当前文件路径说明是做什么的?好像并没用.删 了一试,果然没有用.哎,要不是被我发现了,.险些被骗了.

 

至此终止,一番查询,猜想,尝试,我终于解决这个问题了.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值