如何用UpdateResource替换位图资源(VB6.0)

论坛里有朋友问了这个问题: http://www.m5home.com/bbs/thread-3528-1-1.html

就是使用UpdateResource函数更新资源后,VB6提示"无效图片"的问题.

我检查了代码中API的返回值,貌似都是对的,而更改后,EXE内的资源确实也改变了,但是就算是使用eXeScope去打开这个被替换的资源,也提示是"无效的位图".

真是怪了.....

于是再用eXeScope打开一个正常资源的EXE看了一下,将其中的资源以二进制格式查看,再对比资源的原图片的二进制内容,发现EXE中资源少了14个字节........该不会是........

赶紧把BITMAP文件头翻出来一看,果然:

Private Type BITMAPFILEHEADER
bfType As Integer '2字节
bfSize As Long '4字节
bfReserved1 As Integer
bfReserved2 As Integer
bfOffBits As Long
End Type

这是BITMAP文件头结构,就是14个字节,汗.

于是把代码中UpdateResource一段更改了一下,减去了文件头,再运行目标EXE,就正常了....

但是其中具体原因没有深入,因为看着MSDN中那些英文,我那头不是一点半点的疼....

不过呢,问题算是治了标了,哈哈哈哈哈哈.......

评论: 0 | 引用: 0 | 查看次数: 1363