Utilizzo di MFC e Visual Studio 2010 C++. Ho bisogno di un modo per far risaltare alcune singole righe di un CListCtrl (tuttavia non voglio usare la funzionalità di selezione integrata per evidenziare le righe). Potrebbe essere il colore dello sfondo della riga, o il peso del font, o forse anche un'immagine (se è performante).MFC: Come cambiare colore/audacia delle righe inimitabili di ListCtrl?
Idealmente, voglio sapere come farlo utilizzando il controllo della lista azionaria. Tuttavia, se ciò non è possibile, fammi sapere come utilizzare il codice di terze parti.
UPDATE
Ecco il codice che ho finito per usare:
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;
}
}
Nel mio caso, non stavo usando l'ItemData per qualsiasi cosa, così ho chiamato SetItemData altrove con un valore booleano a indica se la riga deve essere evidenziata.
questo è davvero esattamente quello che ho in mente la testa ;-) Per quanto riguarda 'GetItemData (RowNumber)', non avete a disposizione in 'cd-> nmcd.lItemlParam' –
@ Serge-appTranslator: buon punto ah , salverebbe una chiamata.Dovrò provarlo. – User