Элемент управления TreeListView

Мне нужно реализовать управление TreeList так же, как в Process Explorer. Я довольно новичок в GUI и не писал такие сложные элементы управления.

Как я вижу в Process Explorer, существует TreeListWindowClass, который содержит дочерние элементы: 2 заголовка, 3 полосы прокрутки (одна из них невидима?) И 1 статическую (место между видимыми полосами прокрутки). Как я понимаю, главный элемент управления рисует все элементы внутри себя. Также я не нашел mfcxxx.dll в прилагаемых dll.

Вопрос 1: какие рамки лучше использовать? Есть: MFC, WTL, обычный WinAPI... Я посмотрел на эту реализацию http://www.codeguru.com/cpp/controls/treeview/classes/article.php/c13167 и был перепутан с> 8000 строк кода в cpp файл с огромными структурами (одна из них содержит 80 элементов). Это простой WinAPI (и C без ++). Я определенно хочу использовать стиль ООП. знак равно

Вопрос 2: Каким должен быть дизайн верхнего уровня этого элемента управления? Можете ли вы объяснить без глубоких деталей, как этот элемент управления должен быть разработан?

Мои ограничения: C++, VS10, ОС: Vista и выше.

заранее спасибо

4 ответа

Решение

Я сделал это недавно и использовал многостолбцовый просмотр дерева с http://www.mimec.org/articles/mfc/mctree

Снимок экрана: просмотр нескольких столбцов

Это довольно простой, но он отвечает моим потребностям и довольно компактный. Это обеспечивает CColumnTreeView класс, который является подклассом CView - так что он работает правильно со стандартным шаблоном CDocument/CView MFC.

Вы можете найти точный эквивалент "Представления древовидного списка" в Process Explorer из источника Process Hacker(что намного лучше, IMHO).

Qt - это библиотека, которая предлагает полностью функционирующий QTreeWidget, который выглядит так, как будто он соответствует требованиям вашей программы.

DevExpress имеет несколько отличных элементов управления списком, но они написаны на C#. Однако вы можете настроить таргетинг на них, используя C++/CLI или управляемый C++. Поэтому я не уверен, что вы можете управлять своим приложением. Так что, возможно, это может быть не так полезно.

Что касается свободных элементов управления списками, я стараюсь держаться подальше от них из-за ошибок и отсутствия поддержки.

Другие вопросы по тегам