: Here's my scenario. I'm displaying the contents of the windows computer's directories in a CTreeCtrl. Ok, fine easy. There are certain things that I need that cannot be stored in CTreeCtrl. I need a model that holds the data externally. Enters CDirNode.
:
But you can store data to CTreeCtrl nodes. See function CTreeCtrl::SetItemData. You could do something like this (or am I totally missing some point:) ---
// We store this kinds of structures to tree
struct MyStruct {
MyStruct(CString& Name, DWORD dwOrder) {
m_Name = Name;
m_Order = dwOrder;
};
CString m_Name;
DWORD m_Order;
};
CTreeCtrl m_MyTree;
HTREEITEM hItem = NULL;
// Let's create couple of nodes to tree
hItem = m_MyTree.InsertItem("Foo", NULL, NULL);
m_MyTree.SetItemData(hItem, (DWORD)new MyStruct("Foo", 1));
hItem = m_MyTree.InsertItem("Bar", hItem, NULL);
m_MyTree.SetItemData(hItem, (DWORD)new MyStruct("Bar", 1));
// Now we want to retrieve our structures
hItem = m_MyTree.GetRootItem();
MyStruct *pMyStruct1 = (MyStruct *)m_MyTree.GetItemData(hItem);
hItem = m_MyTree.GetChildItem(hItem);
MyStruct *pMyStruct2 = (MyStruct *)m_MyTree.GetItemData(hItem);