Шаг 174 - Добавление пунктов к дереву

Итак, продолжаем разговор о стиле Exploler и дереве в левом окне. Мы сейчас создадим код, который добавляет к дереву картинки. Все они будут на одном уровне, то есть мы будем создавать корни. Итак, нам нужно наше приложение, которое мы начали делать в "Шаг 167 - Стиль окна Exploler и панели инструментов".

Для того, чтобы в дереве можно было использовать картинки необходимо подготовить класс списка изображений. Для этого объявляем переменную класса списка изображений.

class CLeftView : public CTreeView
{
...
	CImageList cImageList;
...
};

Создадим и настроим в конструкторе список изображений.

CLeftView::CLeftView()
{
	cImageList.Create(16,16,FALSE,3,0); 
	InsertImageListIcon();
}

void CLeftView::InsertImageListIcon()
{
	HICON hIcon;
	hIcon=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON_DIR)); 
	cImageList.Add(hIcon);
	hIcon=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON_DOC)); 
	cImageList.Add(hIcon);
	hIcon=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON_DIR_OPEN)); 
	cImageList.Add(hIcon);
	hIcon=::LoadIcon(AfxGetResourceHandle(),MAKEINTRESOURCE(IDI_ICON_DOC_OPEN)); 
	cImageList.Add(hIcon);
}

Обратите внимание на то, что я создал массив икон 16х16, так как большие иконы мне показались не очень красиво. Для этого я создал 4 иконы 16х16. Не зря был написан прошлый шаг.

Но вот внимание !!! Теперь для дальнейшего использования необходимо связать список изображений с классом дерева. Вот так.

void CLeftView::OnInitialUpdate()
{
	.......
	GetTreeCtrl().SetImageList(&cImageList,TVSIL_NORMAL);
}

Вызываем соотвествующую функцию, передаем указатель на класс и опцию. Только функция эта не класса вида а класса CTRL соответствующего элементу управления дерево.

Теперь все готово к добавлению элемента к дереву. Вот код.

////////////////////////////////////////////////////
// CLeftView message handlers

void CLeftView::OnAddDir() 
{
 GetTreeCtrl().InsertItem("Dir",0,2);
}

Как видите опять функция класса CTRL позволяет просто вставить пункт. Обратите внимание на цифры. Эти цифры указывают какое изображение будет выводиться в случае, если пункт активный или неактивный.

Итак в глобальном плане. Готовим список изображений, связываем его с деревом, вставляем пункты указывая номера изображений активных и неактивных элементов.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 20.04.2000