раскраска Clistctrl

  • Автор темы zenia
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Z

zenia

#1
Подскажите, плз
Как в CListCtrl сделать, что бы текст различных записей отображался разными цветами?
 
M

Maxx

#2
для изменения цвета текста в режиме report надо обрабатывать сообщение WM_NOTIFY с кодом NM_CUSTOMDRAW, в параметре LPARAM передается указатель на структуру NMLVCUSTOMDRAW, поле dwDrawStage которой указывает стадию рисования
кусок кода:

Код:
LRESULT MainWndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam)
{
switch (message)
{
case WM_NOTIFY:
{
LPNMHDR pnmh = (LPNMHDR)lparam;
if (pnmh->hdr.code == NM_CUSTOMDRAW)
{
LPNMLVCUSTOMDRAW pnmlvcd = (LPNMLVCUSTOMDRAW)lparam;
switch (pnmlvcd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
return CDRF_NOTIFYITEMDRAW;	// рисовать каждый элемент
case CDDS_ITEMPREPAINT:
// цвет текста для строки (номер строки в pnmlvcd->nmcd.dwItemSpec)
pnmlvcd->clrText = RGB(...);	  
pnmlvcd->clrTextBk = RGB(...);	// цвет фона
return CDRF_NEWFONT;
/*
если надо менять цвет текста для каждого subitem'а (его номер в pnmlvcd->iSubItem)
case (CDDS_ITEMPREPAINT | CDDS_SUBITEM);
...
return CDRF_NEWFONT;
*/
}
}
}
...			 // обработка остальных сообщений
}
}
 
A

artiom_kh

#3
Можно также юзать ownerdraw-отрисовку (тогда контрол должен быть создан со стилем LVS_OWNERDRAWFIXED)
 
Статус
Закрыто для дальнейших ответов.