einen Baum Serialisierung ist nicht so kompliziert. Hier eine Funktion mit Pseudocode und ohne Fehler.
Das einzige, was Sie tun müssen, ist die Knoten Daten zu serialisiert ...
Dieser Code wird gegen einen Compiler nicht überprüft, sondern sollte die Art und Weise zeigen, wie dies zu erreichen. Der Code ist dokumentiert.
...
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);
}
}
}
Sie müssen dies selbst schreiben, ein CTreeCtrl kann seinen Inhalt nicht automatisch speichern. –
Bitte versuchen Sie die Grammatik Ihrer Frage zu korrigieren. Es ist nicht klar, was du meinst mit "Würde nur konvertieren, wenn ja, wie variabler Typ" – xMRi
Ich dachte, wenn Sie von AR in eine CTreeCtrl konvertieren müssen – silver