CTreeCtrl && XML
От: Аноним  
Дата: 01.06.05 04:40
Оценка:
необходимо в CTreeCtrl грузить структуру XML файла.
причем не всю сразу (чтобы не было тормозов в момент загрузки).
грузить надо сначало только самый первый нод в базе XML, а при раскрытии чилды и так далее...
также при загрузке необходимо итемам в дереве устанавливать значек +

еще возникает вопрос: как мне в XML найти нод, который в данное время в CTreeCtrl необходимо развернуть.
нодо как то идентифицировать итемы и т.п.
но как

может кто расскажет как это сделать или даст пару линок.

спасибо.
Re: CTreeCtrl && XML
От: Alexmoon Украина  
Дата: 01.06.05 11:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>необходимо в CTreeCtrl грузить структуру XML файла.


перечисляешь узлы с помощью интерфейсов MSXML 4.0 и делаешь InsertItem v TreeView

А>причем не всю сразу (чтобы не было тормозов в момент загрузки).

А>грузить надо сначало только самый первый нод в базе XML, а при раскрытии чилды и так далее...
А>также при загрузке необходимо итемам в дереве устанавливать значек +

не делаешь рекурсии, только чтобы отображались плюсы делаешь фективные пустые ноды в каждом корне в котором есть хоть один вложенный узел.

А>еще возникает вопрос: как мне в XML найти нод, который в данное время в CTreeCtrl необходимо развернуть.

А>нодо как то идентифицировать итемы и т.п.
А>но как

к lparam каждого итема цепляешь информацию идентификации в схеме XML. При выборе итема пользователем берешь эту инфу и ищешь в схеме.

А>может кто расскажет как это сделать или даст пару линок.


А>спасибо.


Приблизительно так. Может забыл бегло чего, но идея такова.
Re[2]: CTreeCtrl && XML
От: Alexmoon Украина  
Дата: 01.06.05 11:32
Оценка:
Здравствуйте, Alexmoon, Вы писали:

A>Здравствуйте, Аноним, Вы писали:


только незабудь дереву в момент изменения контента, тем более поиска при развертывании обернуть

::SendMessage(m_hWnd, WM_SETREDRAW, (WPARAM)FALSE, 0);
::SendMessage(m_hWnd, WM_SETREDRAW, (WPARAM)TRUE, 0);

это школьные правила хорошего тона.
Re[3]: CTreeCtrl && XML
От: Alexmoon Украина  
Дата: 01.06.05 11:43
Оценка:
Здравствуйте, Alexmoon, Вы писали:

A>только незабудь дереву в момент изменения контента, тем более поиска при развертывании обернуть


A>::SendMessage(m_hWnd, WM_SETREDRAW, (WPARAM)FALSE, 0);

A>::SendMessage(m_hWnd, WM_SETREDRAW, (WPARAM)TRUE, 0);

A>это школьные правила хорошего тона.


small note:

это чтобы в момент формирования структуры дерева при добавлении огромного количества нодов не было мигания. Формируешь целиком, а потом рисуешь(другие приемы имеют негативный визуальный эффект), можна в этот момент этот фиктивный дочерний узел отображать как please wait.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.