⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 picserialize.cpp

📁 电子相册程序,实现图片的浏览,放大缩小等动能!evc4.0下编译通过!
💻 CPP
字号:
// PicSerialize.cpp: implementation of the CPicSerialize class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "EPicBook.h"
#include "PicSerialize.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CPicSerialize::CPicSerialize()
{
	m_nPage = 0;
	m_nPhoNum = 0;
}

CPicSerialize::~CPicSerialize()
{
	for(int i = 0; i < ebookItems.size(); ++i)
	{
		delete ebookItems[i];
	}
	ebookItems.clear();
}

void CPicSerialize::Serialize(CArchive& ar)
{
	CInfoZip InfoZip;
	if (!InfoZip.InitializeZip())
	{
		AfxMessageBox("Must be initialized", MB_OK);
		return;
	}
	if(ar.IsStoring())
	{
		m_nPhoNum = 0;
		ar << m_nPage;
		for(int i = 0; i < m_nPage; ++i)
		{
			ar << ebookItems[i]->nPage;
			ar << ebookItems[i]->ePageType;
			ar << ebookItems[i]->picPath1;

			if(!ebookItems[i]->picPath1.IsEmpty())
				++m_nPhoNum;
			if(ebookItems[i]->ePageType == 	LEFTTORIGHT || ebookItems[i]->ePageType == UPTODOWN)
			{
				ar << ebookItems[i]->picPath2;
				if(!ebookItems[i]->picPath2.IsEmpty())
				{
					++m_nPhoNum;
				}
			}
		}
	}
	else
	{
		ar >> m_nPage;
		for(int i = 0; i < m_nPage; ++i)
		{
			EBook_Item* pItem = new EBook_Item;
			ar >> pItem->nPage;
			ar >> pItem->ePageType;
			ar >> pItem->picPath1;
			if(pItem->ePageType == 	LEFTTORIGHT || pItem->ePageType == UPTODOWN)
			{
				ar >> pItem->picPath2;
			}
			ebookItems.push_back(pItem);
		}
	}
}


void CPicSerialize::InsertNewPage(int nPage, int pageType, CString& path1, CString& path2)
{
	if(nPage <= m_nPage)  //修改
	{
		ebookItems[nPage - 1]->ePageType = pageType;
		ebookItems[nPage - 1]->picPath1 = path1;
		ebookItems[nPage - 1]->picPath2 = path2;
	}
	else //插入新的页
	{
		EBook_Item* pItem = new EBook_Item;
		pItem->nPage = nPage;
		pItem->ePageType = pageType;
		pItem->picPath1 = path1;
		pItem->picPath2 = path2;
		
		ebookItems.push_back(pItem);
		m_nPage ++;
	}
}

void CPicSerialize::GetPageofIndex(int nIndex, int& pageType, CString& path1, CString& path2)
{
	ASSERT(nIndex >0 && nIndex <=  ebookItems.size());
	pageType = ebookItems[nIndex - 1]->ePageType;
	path1 = ebookItems[nIndex - 1]->picPath1;
	path2 = ebookItems[nIndex - 1]->picPath2;
}

void CPicSerialize::ZipFiles(CString& strPath)
{
	char** pFiles = new char*[m_nPhoNum];
	int j = 0;
	for(int i = 0; i < m_nPage; ++i)
	{
		if(!ebookItems[i]->picPath1.IsEmpty())
		{
			int test = ebookItems[i]->picPath1.GetLength();
			pFiles[j] = new char[260]; 
			memset(pFiles[j], 0, 260);
			memcpy(pFiles[j], ebookItems[i]->picPath1.GetBuffer(0), ebookItems[i]->picPath1.GetLength());
		    j++;
		}	
		if(!ebookItems[i]->picPath2.IsEmpty())
		{
			pFiles[j] = new char[260]; 
			memset(pFiles[j], 0, 260);
			memcpy(pFiles[j], ebookItems[i]->picPath2.GetBuffer(0), ebookItems[i]->picPath2.GetLength());
		    j++;
		}	
	}

		CInfoZip InfoZip;
		strPath += "pak";
 
		if (!InfoZip.Initialize())
		{
			AfxMessageBox("Must be initialized", MB_OK);
			return;
		}

		if (!InfoZip.InitializeZip())
		{
			AfxMessageBox("Must be initialized", MB_OK);
			return;
		}
		if (!InfoZip.AddFiles(strPath.GetBuffer(0), pFiles, m_nPhoNum))
		{
			AfxMessageBox("Files not added", MB_OK);
			return;
		}
		
		if(!InfoZip.FinalizeZip())
		{
			AfxMessageBox("Cannot finalizeZip", MB_OK);
			return;
		}

		if (!InfoZip.Finalize())
		{
			AfxMessageBox("Cannot finalize", MB_OK);
			return;
		}
		for(i  = 0; i < m_nPhoNum; ++i)
		{
			delete [] pFiles[i];
		}
		delete [] pFiles;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -