{
MyBasicClass::Serialize(ar);//基类
if(ar.IsLoading())//读取
{
ar >> m_nPayNo;//整形,double形, long
ar.Read(&m_bValue,sizeof(m_bValue));//bool形
ar >> m_sValue;//CString
ar >> m_TimeCreate.wYear; //SYSTEMTIMEar >> m_TimeCreate.wMonth;
ar >> m_TimeCreate.wDay;
ar >> m_TimeEnd.wYear;
ar >> m_TimeEnd.wMonth;
ar >> m_TimeEnd.wDay;
//BYTE 指针
ar >> m_nLength;
if(m_nLength>0)
{
m_pData= new BYTE[m_nLength];
ar.Read(m_pData,m_nLength);
}
//CObArray 数组
int nTemp=0;//先得到长度
ar >> nTemp;
for(int i=0;i<nTemp;i++)
{
CMyClass* pData = new CMyClass;//数组里面的内容(自定义类)
pData->Serialize(ar);
m_arSign.Add(pData);
}
m_lstSmartVar.Serialize(ar); //CObList链表
m_MyClass.Serialize(ar);//自定义类
//CBitmap m_Bmp; CBitmap 类
bool bHave;
ar.Read(&bHave,sizeof(bHave));
if(bHave)
{
CPaperDib* pDib = new CPaperDib;
pDib->Serialize(ar);
HBITMAP hBitmap = CPaperDib::DIBToBitmap(pDib);
if(m_Bmp.m_hObject)
m_Bmp.DeleteObject();
m_Bmp.Attach(hBitmap);
delete pDib;
}
//CRect 类
ar >> m_Rect.top;
ar >> m_Rect.bottom;
ar >> m_Rect.left;
ar >> m_Rect.right;
}
else //写
{
ar << m_nPayNo; //整形,double形, long
ar.Write(&m_bValidate,sizeof(m_bValidate));//bool形
ar << m_sValue;//CString
ar << m_TimeCreate.wYear; //SYSTEMTIME
ar << m_TimeCreate.wMonth;
ar << m_TimeCreate.wDay;
ar << m_TimeEnd.wYear;
ar << m_TimeEnd.wMonth;
ar << m_TimeEnd.wDay;
//BYTE 指针
ar << m_nLength;
if(m_nLength>0)
{
ar.Write(m_pData,m_nLength);
}
//CObArray 数组
int nTemp=m_arSign.GetSize();
ar << nTemp;
for(int i=0;i<nTemp;i++)
{
CMyClass* pData = (CMyClass*)m_arSign.GetAt(i);
pData->Serialize(ar);
}
m_lstSmartVar.Serialize(ar); //CObList链表
m_MyClass.Serialize(ar);//自定义类
//CBitmap m_Bmp; CBitmap 类
bool bHave = true;
CPaperDib* pDib = CPaperDib::BitmapToDIB((HBITMAP)this->m_Bmp.GetSafeHandle());
if(!pDib)
bHave = false;
ar.Write(&bHave,sizeof(bHave));
if(pDib)
{
pDib->Serialize(ar);
delete pDib;
}
//CRect 类
ar << m_Rect.top;
ar << m_Rect.bottom;
ar<<m_Rect.left;
ar << m_Rect.right;
}
}
CFile file(sFilePath,CFile::modeRead); //读取 sFilePath是要读取的文件名
if (file != NULL)
{
CArchive ar(&file, CArchive::load);
TRY
{
MyClass.Serialize(ar);//MyClass 类的对象
}
CATCH_ALL(e)
{}
ar.Close();
}
//保存 sFilePath是要保存的文件名
CFile file;
CFileException e;
if( !file.Open(sFilePath,CFile::modeCreate|CFile::modeWrite,&e) )
return;
CArchive ar(&file, CArchive::store);
TRY
{
MyClass.Serialize(ar);//MyClass 类的对象
}
CATCH_ALL(e)
{}
END_CATCH_ALL
ar.Close();