打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MFC中参数设置的序列化类
class CSoftParam:public CObject
{
 DECLARE_SERIAL(CSoftParam)
public:
 CSoftParam();
~CSoftParam();
public:
CString m_strRecPath;
DWORD m_filemask;
DWORD m_version;

void Serialize(CArchive &ar);
void SaveData(const char *pstrfile= NULL);
void LoadData(const char *pstrfile = NULL);

private:
void DefaultParam();
void LoadVer0(CArchive&ar);


};

cpp

IMPLEMENT_SERIAL(CSoftParam,CObject,0)
CSoftParam::CSoftParam()
{
 DefaultParam();

}
void CSoftParam::DefaultParam()
{
m_filemask = 0x00000001;
m_version = 0x00000001;
m_strRecPath.Forma("sdfsdfsdfds");

}
CSoftParam::~CSoftParam()
{
}
void CSoftParam::Serialize(CArchive& ar)
{
  if(ar.IsStoring())
{
m_version = 0x00000001;
ar<< m_filemask << m_version
<<m_strRecPath;

}
else
{
ar>> m_filemask >> m_version
switch(m_version)
{
case 0x00000001:
LoadVer0(ar);
break;
default:
LoadVer0(ar);
break;


}

}

}

void CSoftParam::SaveData(const char * pstrfile)
{
CFile DataFile;
CString filename;
if(pstrfile == NULL)
{
filename = APPDIR;
filename += "\\";
filename += SOFTPARAM_FILENAME;

}
else
{
filename = pstrfile;

}
try
{
DataFile.Open(filename,CFile::modeCreate | CFile::modeReadWrite | CFile::shareDenyNonem,NULL);
CArchive ar(&DataFile,CArchive::store);
Serialize(ar);


}
catch(...)
{

}
DataFile.Close();

}


void CSoftParam::LoadData(const char * pstrfile)
{
CFile DataFile;
CString filename;
DWORD filemask = 0;
if(pstrfile == NULL)
{
filename = APPDIR;
filename += "\\";
filename += SOFTPARAM_FILENAME:

}
else
{
filename = pstrFile;

}
try
{
 if(!DataFile.Open(filename,CFile::modeReadWrite | CFile::shareDenyNone,NULL))
{
goto err_exit;

}
if(DataFile.Read(&filemask,sizeof(DWORD))!= sizeof(DWORD))
{
 DataFile.Close();
goto err_exit;

}
DataFile.Seek(0,SEEK_SET);
if(filemask != CFGFILEMASK)
{
DataFile.Close();
goto err_exit;

}
CArchive ar (&DataFile,CArchive::load);
Serialize(ar);

}

catch(...)
{
DataFile.Close();
goto err_exit;

}
DataFile.Close();
return ;
err_exit:
DefaultParam();
SaveData();


}

void CSoftParam::LoadVer0(CArchive&ar)
{
ar>>m_strRecPath;

}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
CArchive
6.3.4 使用MFC::CArchive - 笔记 - 白乔 - CSDN学生大本营 -...
MFC序列化
VC序列化问题(Serialize)
添加到文本文件末尾
指针悬挂
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服