单文档多视图序列化保存
我单文档有左右两个视图,都是树视图类,分别重写了序列化函数如下:
if (ar.IsStoring())
{ // storing code
HTREEITEM hti=m_pTree->GetRootItem();
while (hti)
{
int indent=GetIndentLevel(hti);
while(indent--)
ar.WriteString("\t");
ar.WriteString(m_pTree->GetItemText(hti)+"\r\n");
hti=m_pTree->GetNextItem(hti,TVGN_NEXTVISIBLE);
}
}
else
{ // loading code
CString sLine;
if (!ar.ReadString(sLine))
return;
HTREEITEM hti=NULL;
int indent,baseindent=0;
while(sLine[baseindent]=='\t')
baseindent++;
do
{
if(sLine.GetLength()==0)
continue;
for(indent=0;sLine[indent]=='\t';indent++);
sLine=sLine.Right(sLine.GetLength()-indent);
indent -= baseindent;
HTREEITEM parent;
int previndent=GetIndentLevel(hti);
if(indent==previndent)
parent=m_pTree->GetParentItem(hti);
else
if(indent>previndent)
parent=hti;
else
{
int nLevelsUp=previndent-indent;
parent=m_pTree->GetParentItem(hti);
while(nLevelsUp--)
parent=m_pTree->GetParentItem(parent);
}
hti=m_pTree->InsertItem(sLine,parent?parent:TVI_ROOT,TVI_LAST);
} while (ar.ReadString(sLine));
}
最后在DOC里
void CTestDoc::Serialize(CArchive& ar)
{
CMainFrame *pMainFrame=(CMainFrame *)AfxGetMainWnd();
m_Tree1=pMainFrame->GetTree1(); //树视图的指针
m_Tree2=pMainFrame->GetTree2();
if (ar.IsStoring())
{
// TODO: add storing code here
m_Tree1->Serialize(ar);
m_Tree2->Serialize(ar);
}
else
{
// TODO: add loading code here
m_Tree1->Serialize(ar);
m_Tree2->Serialize(ar);
}
}
但问题是第二个视图没数据,现在想知道怎么在读取第一个的时候,不全部读完