在vc工程当中除了添加ico、对话框资源、菜单资源和位图资源等标准资源类型之外,它还支持自定义资源类型(Custom Resource),这有何用处呢?
我所做的工程就是在用户双击可执行文件之后解压一个zip文件,我希望zip文件加载到exe文件中,而不希望是两个文件,也不希望用Nsis打包来实现,仅仅就是一个exe可执行文件,exe可执行文件当中包含zip文件,岂不快哉。呵呵~~~,想到这里偷偷地乐了。
也可以包Flash做成exe呀。avi,Mp3,等等资源都可以包含到exe可执行文件当中啊。
此处有两个要点,一个是如何添加,一个是使用
1. 添加:添加资源时选择custom,vs2003(我用的是2003)会为你生成一个新的二进制资源,然后你就可以将你已经存在的二进制文件作为自定义的资源类型导入到项目中来了。妙哉,第一次用,以前没用过,猴哥一句话胜读十年书。
2.使用
如何使用自定义资源才是最重要的,呵呵,参考了别人写的博客发现要用到的几个API函数 FindResource、LoadResource和LockResource等,
FindResource用来在一个指定的模块中定位所指定的资源:
详细介绍参加MSDN
HRSRC FindResource(
HMODULE hModule, //包含所需资源的模块句柄,如果是程序本身,可以置为NULL
LPCTSTR lpName, //可以是资源名称或资源ID
LPCTSTR lpType //资源类型,在这里也就是我们自己指定的资源类型
);
LoadResource用来将所指定的资源加载到内存当中;HGLOBAL LoadResource(
HMODULE hModule, //模块句柄,同上
HRSRC hResInfo //需要加载的资源句柄,这里也就是FindResource的返回值
);
LockResource用来锁定内存中的资源数据块,它的返回值也就是我们要使用的直系指向资源数据的内存指针;LPVOID LockResource(
HGLOBAL hResData //指向内存中要锁定的资源数据块,这里也就是LoadResource的返回值
);
这几个API我以前也没用过,这个工程希望猴哥不急着要才行。呵呵~~~~~,估计加载zip包着一部分应该能完成,今天是完成不了了。明天接着做吧。