Korzystanie z MFC i Visual Studio 2010 C++. Potrzebuję sposobu, aby wyróżnić poszczególne rzędy CListCtrl (jednak nie chcę używać wbudowanej możliwości zaznaczania wierszy). Może to być kolor tła wiersza, masa czcionki, a nawet obraz (jeśli jest to wydajność).MFC: Jak zmienić kolor/odwagę poszczególnych wierszy ListCtrl?
Idealnie chcę wiedzieć, jak to zrobić za pomocą kontrolki na liście. Jeśli jednak nie jest to możliwe, daj mi znać o sposobie korzystania z kodu innej firmy.
UPDATE
Oto kod I skończył przy użyciu:
void MyList::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVCUSTOMDRAW* cd = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
*pResult = CDRF_DODEFAULT;
switch(cd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
{
int rowNumber = cd->nmcd.dwItemSpec;
bool highlightRow = (bool)GetItemData(rowNumber);
if (highlightRow)
{
COLORREF backgroundColor;
backgroundColor = RGB(255, 0, 0);
cd->clrTextBk = backgroundColor;
}
}
break;
default:
break;
}
}
W moim przypadku nie używał itemData do niczego, więc zadzwoniłem SetItemData gdzie indziej z wartością logiczną do wskazać, czy wiersz powinien być podświetlony.
To rzeczywiście dokładnie to, co ja udać na uwadze ;-) Jeśli chodzi o 'GetItemData (RowNumber)', czy nie ma on dostępny w 'CD-> nmcd.lItemlParam' –
@ Serge-appTranslator Ach dobrym punkcie , może zapisać połączenie.Będę musiał spróbować tego. – User