C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 174 - Добавление пунктов к дереву / MFC шаг за шагом / Visual C++

Шаг 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 позволяет просто вставить пункт. Обратите внимание на цифры. Эти цифры указывают какое изображение будет выводиться в случае, если пункт активный или неактивный.

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


| |
Автор Каев Артем.
[AD]