预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共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