炫彩界面库论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2112|回复: 0

代码贡献二: 从Zip加载数据 返回Buffer

[复制链接]

该用户从未签到

发表于 2014-2-1 12:15:27 | 显示全部楼层 |阅读模式
  1. XC_API void* WINAPI XC_LoadXML_Zip(wchar_t *pZipFileName,wchar_t *pImageName,wchar_t *pPassword);
  2. XC_API void WINAPI XC_UnLoadXML_Zip(void* lpData);
复制代码
  1. XC_API void WINAPI XC_UnLoadXML_Zip(void* lpData)
  2. {
  3.         free(lpData);
  4. }


  5. void* WINAPI XC_LoadXML_Zip(wchar_t *pZipFileName,wchar_t *pImageName,wchar_t *pPassword)
  6. {
  7.         char zipfilename[MAX_PATH]={0};
  8.         WideCharToMultiByte(CP_ACP,NULL,pZipFileName,wcslen(pZipFileName),zipfilename,MAX_PATH,NULL,NULL);

  9.         char filename_to_extract[MAX_PATH]={0};
  10.         WideCharToMultiByte(CP_ACP,NULL,pImageName,wcslen(pImageName),filename_to_extract,MAX_PATH,NULL,NULL);

  11.         char password[MAX_PATH]={0};
  12.         if(pPassword)
  13.                 WideCharToMultiByte(CP_ACP,NULL,pPassword,wcslen(pPassword),password,MAX_PATH,NULL,NULL);

  14.         //const char *password=NULL;
  15.         //char *zipfilename="C:\\Users\\mengfei\\Desktop\\myzip.zip";  //压缩包
  16.         //char *filename_to_extract="dirtt/123.txt";   //提取文件名
  17.         //char *filename_to_extract="btn.bmp";   //提取文件名

  18.         unzFile zipFile=NULL;
  19.         zipFile = unzOpen64(zipfilename); //打开压缩包
  20.         if (zipFile==NULL)
  21.         {
  22.                 return NULL;
  23.         }

  24.         int outSize=0;
  25.         void  *data =NULL;
  26.         if(pPassword)
  27.                 data=do_extract_onefile(zipFile, filename_to_extract,password,outSize);
  28.         else
  29.                 data=do_extract_onefile(zipFile, filename_to_extract,NULL,outSize);

  30.         unzClose(zipFile);

  31.         //返回加载后的资源
  32.         return data;
  33. }
复制代码
可以分别在XML.h 和XML.cpp中添加如下两个函数,在添加zip头文件

  1. #include "../zlib/unzip.h"
  2. #pragma comment(lib,"unzip.lib")

  3. #define CASESENSITIVITY   (0)
  4. #define MAXFILENAME       (256)
  5. #define WRITEBUFFERSIZE   (8192)
复制代码
这样就ok啦


您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

QQ|Archiver|手机版|小黑屋|炫彩界面库 ( 鄂ICP备2023014763号-1 )

GMT+8, 2024-9-19 09:58 , Processed in 0.064217 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表