Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > Как бы вы поступили...Хранение ид


Автор: tonchitos 24.4.2008, 17:07
У меня есть дерево, CTreeCtrl.

которое является графическим представлением модели (UML) так вот...каждый узел дерева хранит указатель на элемент в дереве данных....


У меня в дереве есть некоторые элементы (класс...... таккие элементы хранят атрибуты, операции и еще один узел, в котором есть список базовых классов...


класс
    атрибут
    атрибут
    атрибут
    операция
    операция
    базовые классы
        базовый класс один
        базовый класс два

так вот если все атрибуты и операции и классы и пакеты и проч в itemData хранят указатель на идентификатор элемента в дереве данных...
то узел-базовый класс должен хранить указатель на HTREEITEM этого базового класса... чтобы при клике на базовый класс происходил переход к нему в дереве...

какпоступить... наверно надо в том классе который от дерева гуевого отнаследован добавить вектор HTREEITEMов,  а?

и хранить казатели?
как то так, да?

Автор: Earnest 24.4.2008, 17:21
Зачем? Ты для любого HTREEITEM можешь спросить парента у дерева.
И ни в коем случае не надо в логическую структуру данных (в класс свой) никаких упоминаний о ГУИ.
А вот каждый итем дерева пусть хранит какую то ссылку на логические данные.

Автор: Rififi 24.4.2008, 18:17
создаешь структуру UML, которая содержит список главных сущностей - в данном случе это Класс
далее какая-нибудь функция типа void UML::render(CTreeCtrl&)
которая маппит внутренние данные в контрол

Автор: Earnest 25.4.2008, 10:05
Не слушай его, tonchitos,  smile UML-структуры не должны ничего знать о методах своего отображения, а должны просто предоставлять необходимый интерфейс для вывода себя куда угодно. 

Автор: tonchitos 25.4.2008, 15:33
 smile  не буду ))))

А вообще вот что решили - создаем класс, содержащий инт, строку, и htreeitm.

ну и ясное дело создаем вектор классов...

Каждому инту (индексу соответствует строка и htreeitm)
потом в дерево записываем индексы
тогда по htreeitmу можно получить строку и ид, по ид строку и htreeitm ии тп... То есть работа во всех направлениях...
А элементы в списке базовых классов будут иметь такие же индексы как базовые, но соответствия инлдекса и их htreeitmа не будет...
так мы сможем отличать узел с базовым классом от виртуального узла )))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)