CSxj是一个继承CWnd的类,我在其中使用Serialize,存的时候可以,可读取时错误,是不是一定要CObject类才能用Serialize?void CSxj::Serialize(CArchive& ar)
{
if (ar.IsStoring()) {
ar<<m_IP<<m_nChannel<<xPos<<yPos;
}
else{
ar>>m_IP>>m_nChannel>>xPos>>yPos;
}
}
{
if (ar.IsStoring()) {
ar<<m_IP<<m_nChannel<<xPos<<yPos;
}
else{
ar>>m_IP>>m_nChannel>>xPos>>yPos;
}
}
void CSxj::Serialize(CArchive& ar)
{
if (ar.IsStoring()) {
ar<<m_IP<<m_nChannel<<xPos<<yPos;
}
else{
ar>>m_IP>>m_nChannel>>xPos>>yPos;
}
}
1.还有其它的几个条件,要有默认的构造和析构函数!
2.还要在程序的 .h 里面有
DECLARE_DYNCREATE(CYouClass)
.cpp里有:
IMPLEMENT_DYNCREATE(CYouClass, CObject)
3. 要把 Serialize(CArchive& ar) 定义成 virtual 了!
CObject
|
--CmdTarget
|
——CWnd
CObArray m_SxjArray;
CFile f;
f.Open("SxjInfo.ini",CFile::modeRead);
CArchive ar(&f,CArchive::load);
m_SxjArray.Serialize(ar);
CObArray m_SxjArray;
CFile f;
f.Open("SxjInfo.ini",CFile::modeRead);
CArchive ar(&f,CArchive::load);
m_SxjArray.Serialize(ar);//就这错
CObArray m_SxjArray;
CFile f;
f.Open("SxjInfo.ini",CFile::modeRead);
CArchive ar(&f,CArchive::load);
m_SxjArray.Serialize(ar);//就这错出错时如果点《忽略》,就会说“没找到一未命名文件”,感觉好像是读取格式错误。
这是我从候捷老师的《深入浅出MFC 》2E 中学的!!