Ive сделал CListCtrl в представлении отчета в MFC. Я хочу покрасить первый столбец (полный столбец, а не только те ячейки, где есть элемент) с серым фоном.Изменить Цвет фона полного столбца CListCtrl в MFC
Как я могу это сделать? Thank
Ive сделал CListCtrl в представлении отчета в MFC. Я хочу покрасить первый столбец (полный столбец, а не только те ячейки, где есть элемент) с серым фоном.Изменить Цвет фона полного столбца CListCtrl в MFC
Как я могу это сделать? Thank
Как вы реализуете это, цвет каждой ячейки первой строки индивидуально. Код будет выглядеть примерно так, как показано ниже: в основном это синий шрифт, но он должен работать (примечание: я не тестировал это для этого сообщения). Вам нужно будет использовать lplvcd->iSubItem
и нарисовать первый столбец каждой строки.
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;
case CDDS_SUBITEM | CDDS_ITEMPREPAINT:
{
// something like if(lplvcd->iSubItem == 0) to paint first column
lplvcd->clrText = RGB(0,0,255);
*pResult = CDRF_NEWFONT;
return;
}
default:
break;
}
}
Возможный дубликат http://stackoverflow.com/q/19682479/385646 – MikMik
Я бы реализовать 'CMFCLisCtrl' производный класс и переопределить' OnGetCellBkColor' метод. Все намного проще, чем с пользовательскими ничьей. У меня было это как ответ здесь, но некоторые модераторы удалили его, потому что он/она считал, что он равен тому, который я предоставил на http://stackoverflow.com/a/37571685/383779 'OnGetCellBkColor' и' OnGetCellTextColor' - разные вещи! **БЕЗ РАЗНИЦЫ!** – sergiol