복잡하지 않다. 여기에 몇 가지 의사 코드가 있으며 오류가없는 기능이 있습니다.
당신이해야 할 유일한 것은, 노드 데이터 ...
이 코드
는 컴파일러에 대해 확인하지 않고 이것을 달성하는 방법을 방법을 표시해야합니다을 직렬화하는 것입니다. 코드가 문서화됩니다.
...
SerializeTree(m_tree.GetRootItem(), ar);
...
void SerializeTree(CTreeCtrl &tree, HTREEITEM hItem, CArchive &ar)
{
if ar.IsStoring())
{
// Count items on this level
DWORD dwCnt = 0;
for (HTREEITEM hNext = hItem; hNext; hNext = tree.GetNextItem(hNext,TVGN_NEXT)
++dwCnt;
// output data on this level
ar << dwCnt;
for (HTREEITEM hNext = hItem; hNext; hNext = tree.GetNextItem(hNext,TVGN_NEXT)
{
// Output data of this node
OutputDataOfNode(tree,hNext,ar);
// Stream children of this node
SerializeTree(tree,tree.GetChildItem(hNext),ar);
}
}
else
{
// Get number of nodes on this level
DWORD dwCnt;
ar >> dwCnt;
while (dwCnt--)
{
// Insert a new node
HTREEITEM hNext = tree.InsertItem(_T(""),hItem ? hItem : TVI_ROOT, TVI_LAST);
// Read data of node into the new node hNext
ReadDataOfNode(tree,hNext,ar);
// Now read all children
SerializeTree(tree,hNext,ar);
}
}
}
CTreeCtrl에서 자동으로 내용을 저장할 수 없습니다. 직접 작성해야합니다. –
질문 문법을 수정하십시오. "무엇을 어떻게 변하는 형식으로 변환해야합니까?" – xMRi
내가 ar에서 CTreeCtrl로 변환해야한다고 생각한다면 – silver