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 руб./мес


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




 176 - Просмотр связей и подчиненность элемента / MFC шаг за шагом / Visual C++

Шаг 176 - Просмотр связей и подчиненность элемента

Наша задача в этом шаге сделать просмотр дерева так, чтобы были видны связи и нижний элемент можно было переподчинить верхнему того-же уровня. Давайте рассмотрим как Вы можете управлять просмотром дерева. Для этого нам необходимо перегрузить виртуальную функцию Create для просмотра.

176_1.gif (5120 b)

После этого мы можем с Вами добавить стили вида. Вот как в примере ниже. Мы с переменной dwStyle добавляем новые атрибуты управляющие видом дерева.

BOOL CLeftView::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName,
	DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID,
	CCreateContext* pContext) 
{
	dwStyle=dwStyle | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS;
	return CWnd::Create(lpszClassName, lpszWindowName,
		dwStyle, rect, pParentWnd, nID, pContext);
}

Следующей нашей задачей будет переподчинение элемента верхнему элементу при условии, что они одного уровня. На панели инструментов я создал кнопку.

176_2.gif (975 b)

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

void CLeftView::OnGoRigth() 
{
HTREEITEM hi;
hi=GetTreeCtrl().GetSelectedItem();  
if (hi!=NULL)
	{ 
	  .......
	}
else AfxMessageBox("Not Selected Item");
}

Теперь нам надо получить указатель на элемент дерева того же уровня. Вот так это можно сделать. Функция GetPrevSiblingItem получает указатель на элемент того же уровня, но выше указанного элемента.

 HTREEITEM his;
  his=GetTreeCtrl().GetPrevSiblingItem(hi);
  if (his!=NULL)
  {
   ......
  }
  else AfxMessageBox("Not Move Item")

Ну вот и пришло время подчинить нижний элемент верхнему.

int notselect;
int select;
GetTreeCtrl().GetItemImage(hi,notselect,select); 
GetTreeCtrl().InsertItem(GetTreeCtrl().GetItemText(hi),notselect,select,his);
GetTreeCtrl().DeleteItem(hi); 

Вот так можно сделать. Смотрите. Первое, что мы делаем это получаем 2 характеристики выделенного элемента. Первые две это картинки когда активный или когда не активный. Командой InsertItem мы вставляем элемент как подчиненный для верхнего. Не зря же мы указали his в конце. Это указатель на элемент, в подчинение которому пойдет этот элемент. В конце перемещаемый элемент мы удаляем.


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