Бачурин Н.В.
Динамически
редактируемое дерево в Win32 API.
2006/01/13
This
article was contributed by Bachurin Nikolaj Walentinowich.
Environment:
Win32, VC7 (recommended, but not required).
Часто требуется в программе иметь дерево с возможностью редактирования. Пример – OutlookExpress, где папки можно перемещать, создавать подпапки, переименовывать их. Сайт www.codeguru.com имеет много примеров деревьев с похожей функциональностью. К сожалению, надо самому дорабатывать примеры программ, объединять их, исправлять ошибки, что требует очень много времени. Кроме того, в них используются классы MFC, что часто не кажется мне хорошим стилем программирования. Я выполнил работу по устранению ошибок, объединению разрозненных отрывков кода. В результате создан класс DragDropTree. Он опирается не на MFC, а на мои классы, которые основываются на вызовах чистых Win32 API функций - я использовал свою библиотеку подпрограмм , которая позволила избавиться от необходимости использовать MFC для вызова тривиальных API функций. Итак, что представляет собой мое дерево?
Дерево с перетаскиванием и копированием ветвей, в виде наследника или родственника выбранной ветви. При перетаскивании правой клавишей мыши помимо перетаскивания еще и копирование ветвей. Левой клавишей мыши только перетаскивание ветвей. Помимо этого при нажатии и удержании правой клавиши мыши в течение 1 сек вызов контекстного меню с пунктами удалить или вставить родственные либо наследственные пункты в меню.
Бачурин Николай Валентинович. 13-31.01.2006.