在 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);
}
我在项目中有一个 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);
}