Uso de MFC y Visual Studio 2010 C++. Necesito una forma de destacar ciertas filas individuales de un CListCtrl (sin embargo, no quiero usar la capacidad de selección incorporada para resaltar las filas). Podría ser el color del fondo de la fila, o el peso de la fuente, o posiblemente incluso una imagen (si eso es posible).MFC: ¿Cómo cambiar el color/negrita de las filas individuales de ListCtrl?
Lo ideal es que sepa cómo hacerlo utilizando el control de lista de existencias. Sin embargo, si esto no es posible, hágamelo saber de alguna manera usando código de terceros.
ACTUALIZACIÓN
Aquí está el código que terminé usando:
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;
}
}
En mi caso, yo no estaba usando el ItemData para nada, así que me llamaron SetItemData en otros lugares con un valor booleano para indique si la fila debe estar resaltada.
Eso es de hecho exactamente lo que la cabeza en cuenta ;-) En cuanto a 'GetItemData (rowNumber)', no lo tienes disponible en 'CD-> nmcd.lItemlParam' –
@ Serge-appTranslator: ah buen punto , salvaría una llamada.Tendré que intentar eso. – User