として複雑ではありません。ここでは、いくつかの擬似コードがあり、エラーが発生しない関数です。
あなたがしなければならない唯一のことは、ノードのデータをシリアル化することです...
このコードは、コンパイラに対してチェックされていないが、これを達成するためにどのような方法を示すべきです。コードは文書化されています。
...
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