2017-11-14 1 views
0

Ich muss CTreeCtrl Elemente dynamisch hinzugefügtCTreeCtrl Elemente zur Laufzeit speichern

Serialize ist in der Tat sollte es tun? Müsste nur konvertieren, wenn ja, wie Variablentyp

Wenn nicht wie es geht?

Funktion Serialize

if (ar.IsStoring()) 
{ 
    ar >> m_tree1; 
} 
else 
{ 
    ar << m_tree1; 
} 
+0

Sie müssen dies selbst schreiben, ein CTreeCtrl kann seinen Inhalt nicht automatisch speichern. –

+0

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

+0

Ich dachte, wenn Sie von AR in eine CTreeCtrl konvertieren müssen – silver

Antwort

2

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); 
    } 
    } 
}  
Verwandte Themen