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


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




 277 - Класс CListBox, выбранный элемент другим цветом / MFC шаг за шагом / Visual C++

Шаг 277 - Класс CListBox, выбранный элемент другим цветом

Вооружившись знаниями о структуре DRAWITEMSTRUCT мы можем изменить код, чтобы наш выделенный пункт в списке отражался другим цветом.

void CTestList::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
	CDC dc;
	dc.Attach(lpDrawItemStruct->hDC);
	CRect rect;
	rect=lpDrawItemStruct->rcItem;

	if (lpDrawItemStruct->itemState & ODS_SELECTED)
		dc.SetTextColor(RGB(0,255,0));
	else dc.SetTextColor(RGB(255,0,0));

	dc.DrawText((LPSTR)lpDrawItemStruct->itemData,
		rect,DT_LEFT | DT_WORDBREAK);  
	dc.Detach(); 
}

Можно пойти дальше и использовать заливки:

if (lpDrawItemStruct->itemState & ODS_SELECTED) 
{
	CBrush br(RGB(0,0,255));
	dc.FillRect(&rect,&br);
	dc.SetTextColor(RGB(0,255,0));
} else {
	CBrush br(RGB(255,255,255));
	dc.FillRect(&rect,&br);
	dc.SetTextColor(RGB(255,0,0));
}

Так можно далеко зайти, как говорит моя подруга когда я начинаю ее обнимать :-))) Ну, что выведем рисунок ??? Выведем.

{
	CDC dc;
	dc.Attach(lpDrawItemStruct->hDC);
	CRect rect;
	rect=lpDrawItemStruct->rcItem;

	SetItemHeight(lpDrawItemStruct->itemID,32);
	if (lpDrawItemStruct->itemState & ODS_SELECTED) 
	{
    	dc.DrawIcon(rect.left,rect.top,
			AfxGetApp()->LoadIcon(IDR_MAINFRAME));  
		rect.left =rect.left+32;
		dc.SetTextColor(RGB(0,255,0));
	}
		else
	{
		CBrush br(RGB(255,255,255));
		dc.FillRect(&rect,&br);
		dc.SetTextColor(RGB(255,0,0));
	}
	dc.DrawText((LPSTR)lpDrawItemStruct->itemData,
		rect,DT_LEFT | DT_WORDBREAK);  

	dc.Detach(); 
}

А вот и результат:

277.gif (1200 b)


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