Re: Как сохранить CTreeCtrl в файл
От: Stanislav V. Zudin Россия  
Дата: 16.10.02 06:20
Оценка:
Здравствуйте IceHand, Вы писали:

IH>Немогу разобраться как сохранить CTreeCtrl в файл.

IH>Вроде бы в меню SDI приложения же ессть меню сохранить

Есть. По-умолчанию вызывается CYourDocument::OnSaveDocument

IH>и класс стандартный поддерживает сериализацию.


Кто, дерево? Не, оно сериализацию не поддерживает.

IH>Вобщем объясните как что нужно делать.


Написать функцию, которая будет обегать твое дерево и сохранять все данные в CArchive. Какие данные нужно сохранять и в каком виде — известно только тебе. Будет что-то вроде...

void SerializeTree(HTREEITEM hti, CArchive& ar)
{
   CString text = your_tree.GetItemText(hti); // не помню синтаксиса MFC-шного дерева, извиняй
   ar << text;
   DWORD data = your_tree.GetItemData(hti); 
   ar << data;
   // Сохранить чего-нибудь еще
   ...
   // Сохранить кол-во детей
   int childnum = your_tree.GetChildrenCount(hti); // ну не помню точного имени функции
   ar << childnum;
   // сохранить каждого из дитёнков
   HTREEITEM hchild = your_tree.GetChildItem(hti);
   while(hchild != NULL)
   {
      SerializeTree(hchild, ar);
      hchild = your_tree.GetNextSiblingItem(hti);
   }
}


Чтение по образу и подобию.
_____________________
С уважением,
Stanislav V. Zudin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.