//my code: CFile file; if(!file.Open(FilePath,CFile::modeRead|CFile::typeBinary)) return; CArchive ar(&File,CArchive::store); ar<<... you can use try catch...
//my code: CFile file; if(!file.Open(FilePath,CFile::modeCreate|CFile::modeWrite)) return; CArchive ar(&File,CArchive::store); ar<<... ar.close(); file.close(); you can use try catch...
CFile file;
if(!file.Open(FilePath,CFile::modeRead|CFile::typeBinary))
return;
CArchive ar(&File,CArchive::store);
ar<<...
you can use try catch...
CFile file;
if(!file.Open(FilePath,CFile::modeCreate|CFile::modeWrite))
return;
CArchive ar(&File,CArchive::store);
ar<<...
ar.close();
file.close();
you can use try catch...
一个好象是DECLARE_SERIAL 用在声明文件中
另一个好像是IMPLEMENT_SERIAL 用在定义文件中
两个都有参数的,你查一下msdn
//my code
CMarkFont *pMarkFont = new CMarkFont;
CFile file;
CArchive *ar=NULL;
try
{
if(!file.Open(FileName, CFile::modeCreate || CFile::modeWrite))
MessageBox(NULL, "打开文件出错", "警告", MB_OK);
ar = new CArchive( &file, CArchive::store);
}
catch(...)
{
AfxMessageBox( "转换失败!" );
file.Abort();
if ( ar ) ar->Abort();
delete ar;
return false;
}
.......
pMarkFont->AddChar(pMarkChar);
try
{
pMarkFont->Serialize( *ar );
}
catch( ... )
{
MessageBox(NULL, "转换失败", "警告", MB_OK );
if ( ar ) ar->Abort();
delete ar;
file.Close();
return false;
}....
...
你可以这样写:
TRY
{
pMarkFont->Serialize( *ar );
}
CATCH(CFileException, e)
{
TCHAR szCause[255];
e->GetErrorMessage(szCause,255);
MessageBox(NULL, szCause,"警告", MB_OK );
}
AND_CATCH(CArchiveException, e)
{
TCHAR szCause[255];
e->GetErrorMessage(szCause,255);
MessageBox(NULL, szCause,"警告", MB_OK );
}
END_CATCH