необходимо в CTreeCtrl грузить структуру XML файла.
причем не всю сразу (чтобы не было тормозов в момент загрузки).
грузить надо сначало только самый первый нод в базе XML, а при раскрытии чилды и так далее...
также при загрузке необходимо итемам в дереве устанавливать значек +
еще возникает вопрос: как мне в XML найти нод, который в данное время в CTreeCtrl необходимо развернуть.
нодо как то идентифицировать итемы и т.п.
но как
может кто расскажет как это сделать или даст пару линок.
Здравствуйте, Аноним, Вы писали:
А>необходимо в CTreeCtrl грузить структуру XML файла.
перечисляешь узлы с помощью интерфейсов MSXML 4.0 и делаешь InsertItem v TreeView
А>причем не всю сразу (чтобы не было тормозов в момент загрузки). А>грузить надо сначало только самый первый нод в базе XML, а при раскрытии чилды и так далее... А>также при загрузке необходимо итемам в дереве устанавливать значек +
не делаешь рекурсии, только чтобы отображались плюсы делаешь фективные пустые ноды в каждом корне в котором есть хоть один вложенный узел.
А>еще возникает вопрос: как мне в XML найти нод, который в данное время в CTreeCtrl необходимо развернуть. А>нодо как то идентифицировать итемы и т.п. А>но как
к lparam каждого итема цепляешь информацию идентификации в схеме XML. При выборе итема пользователем берешь эту инфу и ищешь в схеме.
А>может кто расскажет как это сделать или даст пару линок.
А>спасибо.
Приблизительно так. Может забыл бегло чего, но идея такова.
Здравствуйте, 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.