windows sdk编程系列文章27 ---- 文件压缩.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:15 大小:67KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

windows sdk编程系列文章27 ---- 文件压缩.doc

windowssdk编程系列文章27----文件压缩.doc

预览

免费试读已结束,剩余 5 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

windowssdk编程系列文章----文件压缩2008-08-0507:30理论:aPLib(HYPERLINK"http://www.ibsensoftware.com/"\t"_blank"http://www.ibsensoftware.com)由卓越的编程大师JoergenIbsen创建,是一个商业压缩库,供压缩程序数据的编程人员使用。aPLib是压缩领域中性能最优的产品之一,许多压缩程序用它压缩可执行文件。有一些作免杀的朋友也常常会用到这个压缩引擎,它可以用在你的压缩壳里。它既可以对整个文件进行压缩,也可以对文件的一部分进行压缩。本篇采用的aPlib版本是0.36。本篇用到的函数:1。压缩函数:extern"C"size_taP_pack(constvoid*source,void*destination,size_tlength,void*workmem,BOOL(*callback)(size_t,size_t));//下面这个函数用于获取压缩引擎需要的临时缓冲的大小。extern"C"size_taP_workmem_size(size_tinput_size);2。解压缩函数:extern"C"size_taP_depack_asm_fast(constvoid*source,void*destination);本篇采用的是静态库aPlib.lib,这样更具有隐蔽性。另外,我们在代码中使用的压缩和解压缩的判断标志,你可以根据自己的情况做出调整。理论比较简单,我们直接看代码。代码:见光盘vcappack#include"windows.h"#include"commctrl.h"#include"Commdlg.h"#include"shellapi.h"#include"oleauto.h"#pragmacomment(lib,"comctl32.lib")#pragmacomment(lib,"shell32.lib")#pragmacomment(lib,"Comdlg32.lib")#pragmacomment(lib,"aplib.lib")#pragmacomment(lib,"oleaut32.lib")extern"C"size_taP_pack(constvoid*source,void*destination,size_tlength,void*workmem,BOOL(*callback)(size_t,size_t));extern"C"size_taP_workmem_size(size_tinput_size);extern"C"size_taP_depack_asm_fast(constvoid*source,void*destination);/**************************************************************/charszClassName[]="aPLib_Class";charszDisplayName[]="aPLibPack";charplSelect[]="PleaseSelectFileFirst";charbtnClass[]="BUTTON";charEditClass[]="EDIT";charstatClass[]="STATIC";CHARtbClass[]="ToolbarWindow32";CHARaborted[]="Packingaborted";BOOLPacking;BOOLContPack=1;BOOLkillFlag;HICONg_hIcon;HWNDg_hWnd;HWNDg_hToolBar;HBITMAPg_hTbBmp;DWORDg_ThreadID;HINSTANCEg_hInstance;HWNDg_hEdit1;HWNDg_hButn1;HWNDg_hButn2;HWNDg_hStat1;charszFileName[MAX_PATH];charszFilter[]="*.*\0";charSaveFile1[]="SaveFileAs";charPatn1[]="*.*\0";OPENFILENAMEg_ofn;/**************************************************************/HBITMAPSetBmpColor(HBITMAPhBitmap){HDCmDC;HBRUSHhBrush;HBITMAPhOldBmp;HBITMAPh