Visual Studio的rc资源中常见的类型有BITMAP、CURSOR和ICON,这些图片资源可以用LoadBitmap、LoadCursor和LoadIcon等API函数将它们加载到内存中,或者统一使用LoadImage API函数也可以。但对于自定义类型的PNG、XML、ZIP等类型的资源(在添加文件到资源中时会提示设定资源类型),则没有专门的API函数可供使用。因为LoadImage仅仅是支持BITMAP、CURSOR和ICON三种类型。
1、使用场景分析
在我们自己写代码制作程序安装包(一个独立的setup.exe)时,我们需要将要打包的文件压缩到一个zip包,添加到安装包工程的资源中。在双击执行安装包程序时,则要先将资源中的zip读取出来解压到磁盘上,然后将程序的文件拷贝到安装目录中。这种场景就需要从rc资源中将zip包读取出来。
2、从rc资源中导出资源的流程
那应该如何将自定义类型的资源文件从rc资源加载到内存中或者导出呢?对于自定义类型的对象,可以使用FindResource、LoadResource、LockResource和SizeofResource等API函数来处理。大致的处理流程如下:
1)先调用FindResource,根据资源ID和资源类型(注意:这个资源类型就是在资源中添加文件时提示输入的资源类型标识串,比如下面代码中的“P