您的位置:首页 > 其它

从MFC资源文件获取压缩文件内存地址然后直接解压内存中资源文件到物理内存

2018-01-16 15:16 423 查看
第一步:
从MFC资源文件中获取资源文件内存中地址:
HINSTANCEhInstance=

GetModuleHandle(0);
HRSRChrsrc=FindResource(hInstance,MAKEINTRESOURCE(IDR_ZIP1),
L"ZIP");
HANDLEhglob=LoadResource(hInstance,hrsrc);
void*zipbuf=LockResource(hglob);
unsignedintziplen
=
SizeofResource(hInstance,hrsrc);

第二步:从内存中解压文件到指定路径文件夹:
voidCJFUtils::Unzip(void*zipbuf,constunsigned

int
ziplen,constTCHAR
*UnzipBaseDir)
{
     HZIPhz;
     hz=OpenZip(zipbuf,ziplen,
0);
     SetUnzipBaseDir(hz,UnzipBaseDir);

     ZIPENTRYze;
     GetZipItem(hz,
-1, &ze);
     intnumitems=

ze.index;
     for(intzi=
0;zi<numitems;zi++)
     {
          GetZipItem(hz,zi,
&ze);
          UnzipItem(hz,zi,ze.name);
     }
     CloseZip(hz);
}

PS:解压用的是:https://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win
这位大神的引擎:特点:不带dll和lib;使用方便;

第三步:Zip-utils 使用方法:
1、从这里下载:https://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win
下载后的目录截图:

2、用VS打开实例:D:\code\zip\zip_utils_src\examples\simple



3、研究实例中的压缩和解压方法:



第四步:zip-Utils使用:
1、将unzip.cpp、unzip.h、zip.cpp、zip.h四个文件拷贝到工程目录下;
2、将以上4个文件引入到自己的项目中;即可按照第二步的方式使用了。

参考文档:
1、https://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win
2、http://blog.csdn.net/shineorrain/article/details/26138129
3、https://www.cnblogs
7f2c
.com/qingtian224/p/5833456.html (编译报错:uafxcwd.lib
与 LIBCMTD.lib 冲突)
PS:该方法支持x64 和 x86; 该方法相对zlib和 7z 区别:
使用方便,使用不需要lib和dll.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐