在 CListCtrl 上设置背景单元格颜色

Set background cell color on CListCtrl

我在项目中有一个 table :

现在我想让一些行有颜色,所以我尝试了

SetTextBkColor(RGB(122,0,122))

上一行在以下上下文中:

BOOL SickLeaveViewPreviousTab::OnInitDialog()
{

    BOOL result = CDialog::OnInitDialog();

    setHighlighted();

    listCtrl.InsertColumn(0,"Name",LVCFMT_CENTER,80);
    listCtrl.InsertColumn(1,"Surname",LVCFMT_CENTER,120);
    listCtrl.ShowGrid();

    for (int x=0;x<_previous->length();++x)
    {
        shared_ptr<SickLeave> sickLeave = _previous->get(x);
        listCtrl.InsertItem(x,_patient->getName().c_str());
        listCtrl.SetItemText(x,1,_patient->getSurname().c_str());           
        listCtrl.SetTextBkColor(RGB(122,0,122));
    }
    UpdateLayout();
    ReleaseResources();
    return result;
}

但是行的颜色没有改变。我该如何解决这个问题?

P.S。是的,"desease"中有一个错误...

您问题的答案在

CMFCListCtrl 派生出您自己制作的 class,而 CMFCListCtrl 又派生自 CListCtrl。然后按照需要的方式覆盖方法 OnGetCellBkColor

COLORREF CMyColorfulListCtrl::OnGetCellBkColor(int nRow,int nColumn)
{
    if (nRow == THE_ROW_IM_INTERESTED_IN)
    {
        return WHATEVER_COLOR_I_NEED;
    }
    return CMFCListCtrl::OnGetCellBkColor(nRow, nColumn);
}