|
http://tikitak.narod.ru ---- Главная страница сайта
Шаг 53 - Что такое CTreeCtrl
Создание проекта
Опять будем экспериментировать с диалоговым окном. Нам надо поместить на него элемент дерево просмотра и установить стиль, как на рисунке внизу.
Создание кода
Обьявить класс элемента управления
class CTestDlg : public CDialog
{
........
protected:
........
CTreeCtrl m_Tree;
........
};
Организовать обмен данными через DDX
void CTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_TREE1, m_Tree);
}
Установка элементов в инициализации диалогового окна
BOOL CTestDlg::OnInitDialog()
{
..........
HTREEITEM otdel=m_Tree.InsertItem("otdel");
HTREEITEM ayp=m_Tree.InsertItem("ayp",otdel);
HTREEITEM work=m_Tree.InsertItem("working",otdel);
m_Tree.InsertItem("Petrov",ayp);
m_Tree.InsertItem("Ivanow",ayp);
m_Tree.InsertItem("Katj",work);
m_Tree.InsertItem("Olj",work);
m_Tree.InsertItem("Nastj",work);
return TRUE;
}
Описание
Элемент CTreeCtrl предназначен для работы со структурами имеющими древовидную структуру. Вобщем это является основой всех классификаций. Посмотрите на структуру предприятия: всё предприятие - отделы - отряды - люди. Это дерево. Или Государство. Государство - области - районы - поселки - улицы - дома. Практически все данные можно представить в виде иерархий того или иного плана.
Как всегда обьявляем класс и устанавливаем связь через DDX - это мы уже делаем не помню какой раз.
Для заполнения дерева нам необходимо использовать функцию InsertItem у этой функции много описаний и воспользуемся самым простым.
HTREEITEM InsertItem( LPTV_INSERTSTRUCT lpInsertStruct );
HTREEITEM InsertItem(UINT nMask, LPCTSTR lpszItem, int nImage, int nSelectedImage, UINT nState, UINT nStateMask, LPARAM lParam, HTREEITEM hParent, HTREEITEM hInsertAfter );
HTREEITEM InsertItem( LPCTSTR lpszItem, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST );
HTREEITEM InsertItem( LPCTSTR lpszItem, int nImage, int nSelectedImage, HTREEITEM hParent = TVI_ROOT, HTREEITEM hInsertAfter = TVI_LAST);
Как видите в функции выделенной жирным шрифтом обязательным является только один параметр. Это строка. Второй параметр - это адрес ствола дерева. TVI_ROOT - это означает корень, то есть элемент самого верхнего уровня.
Итак при первом вызове функции я создал корень дерева с названием otdel. При выполнении функции возвращается идентификатор этого узла в виде переменной типа HTREEITEM. Мы её запоминаем, чтобы создать узлы меньшего уровня.
Посморите ниже по коду. Теперь используем эту переменную otdel, для того чтобы вставить два ответвления. И при их вставке запоминают место в переменных, для того чтобы вставить еще узлы меньшего ранга.
Запускайте. Вы увидите древовидный список, сможете окрывать, закрывать ветви.
Предыдущий Шаг | Следующий Шаг | Оглавление By Artem.
Используются технологии uCoz
|