亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? readme.txt

?? winzip 開發(fā)環(huán)境:C++
?? TXT
字號(hào):
Zip and unzip in a MFC way.

	Gilles Vollant did a great job writing zip.c and unzip.c (IO on .zip files using zlib), which are distributed with the zlib library. However using them in a program is quite risky. There is no way to recover from an error occurred during zipping, without memory leaks. Let's say we are out of disk space during packing files. There are two things we can do then; we can close our zipFile and get unexpected results, because the function which performs this action tries to write some buffers left back to the disk (and the stream it operates is already in the error state), or we may leave the zipFile opened and have the buffers not freed.  None of these possibilities was a good solution so I rewrote the code to better handle the errors. I left type names as in the original. 
The main improvements are:
- smart buffers (they free automatically at the destruction eliminating memory leaks when an error occurs) 
- CFile class used instead of stream to manipulate files (throws CFileException)
- operator "new" used to allocate memory (it throws CMemoryException so errors can be easily handled).

The ZipFunc is a static library (you can change it if you want) and statically links with compiled zlib.lib (version 1.13 nowadays). The zlib library can be replaced with a newer version providing you also replace the files: "zlib.h" and "zconf.h".  To add ZipFunc library functionality to your project you need to link the library to the project (e.g.  add "..\ZipFunc\debug(release)\ZipFunc.lib" to Project Settings->Link->Input->Object/library modules) and add ZipFunc directory to the preprocessor searches (Project Settings -> C++ -> Preprocessor -> Additional include directories). You may also need to ignore libc.lib library. The ZipFunc library uses MFC in a static library as a Release Configuration and in a shared library as a Debug Configuration. You may need to adapt this to your needs. The details about the functions use are in the sources.

Here goes the example of use CZipFile:

#include "..\ZipFunc\ZipFile.h"

void CCompresorDlg::OnButton1() 
{
	// getting the file to zip
	CFileDialog fd(TRUE);
	if (fd.DoModal() != IDOK)
		return;

	// adding extension
	CZipFile zf(fd.GetPathName() + ".zip", 0);
	char buf[BUF_SIZE];

	CFile f(fd.GetPathName(), CFile::modeRead);

	zip_fileinfo zi;
	// getting information about the date and the attributes
	// (this is new in ZipFunc)
	zf.UpdateZipInfo(zi, f);

	zf.OpenNewFileInZip(fd.GetFileName(), zi, Z_BEST_COMPRESSION);

	int size_read;
	do
	{
		size_read = f.Read(buf, BUF_SIZE);
		if (size_read)
			zf.WriteInFileInZip(buf, size_read);
		
	}
	while (size_read == BUF_SIZE);

	// cannot be called by the destructor because it may throw an exception
	// (it is not good to throw an exception when another one may be progress)
	zf.Close();
}

And below is an example of using the CUnzipFile:

#include "..\ZipFunc\unzipFile.h"

void CCompresorDlg::OnButton2() 
{
	// getting the file to unzip 
	CFileDialog fd(TRUE);
	if (fd.DoModal() != IDOK)
		return;
	CUnzipFile uf(fd.GetPathName());
	uf.GoToFirstFile();
	unz_file_info ui;

	// 	getting the information about the file 
	// (date, attributes, the size of the filename)
	uf.GetCurrentFileInfo(&ui);

	int iNameSize = ui.size_filename + 1;
	char* pName = new char [iNameSize];

	// get the name of the file
	uf.GetCurrentFileInfo(NULL, pName, iNameSize);

	TCHAR szDir[_MAX_DIR];
	TCHAR szDrive[_MAX_DRIVE];
	_tsplitpath(fd.GetPathName(), szDrive, szDir,NULL, NULL);
	CString szPath = CString(szDrive) + szDir;
	CFile f( szPath + pName, CFile::modeWrite | CFile::modeCreate);

	delete[] pName;
	uf.OpenCurrentFile();
	char buf[BUF_SIZE];


	int size_read;
	do
	{
		size_read = uf.ReadCurrentFile(buf, BUF_SIZE);
		if (size_read > 0)
			f.Write(buf, size_read);
		
	}
	while (size_read == BUF_SIZE);

	// set the original date stamp and attributes to the unpacked file
	// (this function closes the file "f" which is needed to apply
	// the attributes)
	uf.UpdateFileStatus(f, ui);

	// cannot be called by the destructor 
	uf.Close();	
}

	The library throws the following exceptions: CMemoryException, CFileExeption and CZipException. The first two don't need an explanation. The last is thrown when some internal zip or unzip error occurs. (The details, once again, are in the sources). Handling  them may be done in a following way:

try
{
	//	...
	//	some zipping or unzipping here(it may be the one of the previous examples)
}
catch (CException* e)
{
	if (e->IsKindOf( RUNTIME_CLASS( CZipException )))
	{
		CZipException* p = (CZipException*) e;
		//... and so on 
	
	}
	else if (e->IsKindOf( RUNTIME_CLASS( CFileException )))
	{
		CFileException* p = (CFileException*) e;
		//... and so on 
	}
	else // the only possibility is a memory exception I suppose
	{
		//... and so on 
	}
			
	e->Delete();
}

Platform: Visual 6.0/MFC 6.0 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产美女主播视频一区| 国产欧美日韩另类视频免费观看| 亚洲欧美日韩国产手机在线| 一本大道久久精品懂色aⅴ| 亚洲精品视频一区| 欧美日韩一级片在线观看| 日韩精品电影一区亚洲| 日韩三级视频在线看| 狠狠色综合播放一区二区| 欧美韩国日本不卡| 色婷婷久久99综合精品jk白丝| 一区二区三区美女视频| 3d动漫精品啪啪1区2区免费 | 中文字幕综合网| 色综合久久久久综合| 偷拍日韩校园综合在线| 久久蜜桃av一区二区天堂| 91麻豆精品秘密| 日韩精品午夜视频| 欧美国产欧美综合| 在线精品视频一区二区三四| 久久电影网站中文字幕| 中文一区二区完整视频在线观看| 在线看日本不卡| 国产精品一区一区| 玉米视频成人免费看| 91精品国产一区二区| 成人午夜视频在线| 日韩av在线播放中文字幕| 欧美精彩视频一区二区三区| 欧美日韩一区二区三区四区五区| 国产精品自拍三区| 亚洲成人在线免费| 国产欧美一区二区精品仙草咪| 日本道免费精品一区二区三区| 久久99九九99精品| 亚洲图片一区二区| 欧美国产禁国产网站cc| 欧美一区二区三区在| 99久久精品免费精品国产| 麻豆一区二区三| 亚洲麻豆国产自偷在线| 国产欧美日韩另类一区| 91麻豆精品国产91久久久久久久久| 国产不卡视频一区二区三区| 午夜激情久久久| 国产精品家庭影院| 久久精品男人天堂av| 欧美另类高清zo欧美| av在线播放成人| 国产一区二区福利| 免费成人美女在线观看.| 亚洲一区二区美女| 国产精品盗摄一区二区三区| 国产亚洲精久久久久久| 日韩欧美在线影院| 欧美三级电影在线看| 91免费看片在线观看| 国产成人在线免费| 精品综合久久久久久8888| 日韩国产精品久久| 一区二区三区四区在线免费观看 | 91精品久久久久久久99蜜桃| 成人av网站大全| 高清国产午夜精品久久久久久| 麻豆精品精品国产自在97香蕉| 亚洲大片免费看| 亚洲视频免费看| 亚洲欧美国产毛片在线| 国产女人水真多18毛片18精品视频 | 91在线视频18| 懂色av一区二区夜夜嗨| 国产精品一卡二| 国模少妇一区二区三区| 日本特黄久久久高潮| 日韩电影一区二区三区| 免费人成黄页网站在线一区二区| 亚洲午夜一二三区视频| 亚洲与欧洲av电影| 一区二区三区91| 亚洲综合999| 亚洲成人777| 五月婷婷另类国产| 日韩av电影免费观看高清完整版| 丝袜脚交一区二区| 日韩不卡手机在线v区| 免费欧美日韩国产三级电影| 久久国产精品无码网站| 国产在线播放一区三区四| 国产凹凸在线观看一区二区| 国产aⅴ综合色| 99久久久无码国产精品| 在线观看亚洲专区| 欧美另类久久久品| 精品久久一区二区三区| 久久精品亚洲一区二区三区浴池| 久久久www成人免费毛片麻豆| 中文字幕免费观看一区| 中文字幕一区免费在线观看| 亚洲精选视频在线| 视频一区在线播放| 国产乱码字幕精品高清av | 老司机午夜精品| 国产精品一区专区| 91丝袜呻吟高潮美腿白嫩在线观看| 色综合色综合色综合 | 91精品婷婷国产综合久久| 精品免费99久久| 国产精品麻豆久久久| 亚洲自拍另类综合| 免费高清在线一区| 成人自拍视频在线| 欧美日韩高清不卡| 国产欧美日韩麻豆91| 亚洲午夜一二三区视频| 久草这里只有精品视频| 91香蕉国产在线观看软件| 91麻豆精品国产91久久久久| 久久精品在线免费观看| 一二三区精品福利视频| 国产在线日韩欧美| 欧美日韩精品免费| 国产亚洲综合性久久久影院| 一区二区三区四区不卡在线| 麻豆91在线播放免费| 91国产丝袜在线播放| 久久久久久久久99精品| 亚洲国产视频一区| 高清成人免费视频| 欧美一区二区成人6969| 亚洲美女一区二区三区| 精品综合免费视频观看| 欧美三级视频在线观看| 国产精品不卡在线| 国产一区二区三区| 在线不卡的av| 国产精品久线在线观看| 久久不见久久见中文字幕免费| 91成人免费电影| 国产精品久久久久久久久免费相片| 蜜臀国产一区二区三区在线播放| 色综合天天性综合| 国产日韩视频一区二区三区| 丝袜a∨在线一区二区三区不卡 | 欧美影视一区在线| 国产精品理论在线观看| 国产精品88888| 日韩限制级电影在线观看| 亚洲伊人伊色伊影伊综合网| 成人午夜电影网站| 国产夜色精品一区二区av| 久久激情五月婷婷| 欧美一区二区三区日韩视频| 亚洲va欧美va人人爽| 欧美系列一区二区| 一区二区激情小说| 色综合欧美在线视频区| 1区2区3区欧美| caoporm超碰国产精品| 国产欧美一区二区三区在线看蜜臀 | 日韩一区二区三区视频| 亚洲成av人片一区二区三区| 91免费在线视频观看| 中文字幕亚洲电影| 成人在线视频一区二区| 国产日韩欧美a| 国产成人无遮挡在线视频| 26uuu久久天堂性欧美| 韩日精品视频一区| 精品国产乱码久久久久久浪潮| 美女网站一区二区| 日韩一区二区精品葵司在线| 三级欧美在线一区| 91精品国产麻豆国产自产在线| 日韩经典中文字幕一区| 日韩一级二级三级精品视频| 三级欧美韩日大片在线看| 日韩一区二区三区电影在线观看| 人人狠狠综合久久亚洲| 91精品国产一区二区| 久久精工是国产品牌吗| 久久久精品人体av艺术| 成人aa视频在线观看| 中文字幕亚洲欧美在线不卡| 日本二三区不卡| 午夜视频在线观看一区二区三区| 欧美三区免费完整视频在线观看| 午夜成人免费电影| 久久综合久久综合久久| 成人免费视频一区| 亚洲精品亚洲人成人网| 欧美美女网站色| 精品在线免费观看| 中文字幕中文乱码欧美一区二区| 欧美中文字幕一区二区三区| 人人超碰91尤物精品国产| 久久色成人在线| 91在线高清观看| 天天射综合影视| www久久精品|