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; } |
|