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

时间:2016-09-14 09:44:02

标签: visual-c++ colors mfc clistctrl

我在项目中有一张表:

http://s017.radikal.ru/i440/1609/c0/ad128b583ad8.jpg

现在我想让一些行变成彩色,所以我尝试了

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”中有一个错误...

1 个答案:

答案 0 :(得分:2)

您的问题的答案在https://stackoverflow.com/a/19701300/383779

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); }

import edu.emory.mathcs.backport.java.util.Arrays;