之前我是通过重载NM_CUSTOMDRAW然后调用 ,SetItemData来实现颜色的改变,现在列表要显示的数据有点多,我就用到了虚拟列表的方法,速度是提上去了,但是又无法改变颜色了,
请问,在使用虚拟列表的情况下,该如何改变列表的颜色
CBrush brush;
brush.CreateSolidBrush(RGB(255,0,0));//红色画刷
this->GetClientRect(&rect);
dc.FillRect(&rect,&brush); //用FillRect成员函数利用笔刷填充指定区域
brush.DeleteObject();
brush.CreateSolidBrush(RGB(0,255,0));//绿色画刷
this->GetClientRect(&rect);
dc.FillRect(&rect,&brush); //用FillRect成员函数利用笔刷填充指定区域
brush.DeleteObject();
HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改 DC 的任何特性
if (nCtlColor == CTLCOLOR_BTN) //更改按钮颜色
{
//pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0, 0, 0));
pDC->SetBkColor(RGB(1, 121, 255));
HBRUSH b = CreateSolidBrush(RGB(121, 121, 255));
return b;
}
else if (nCtlColor == CTLCOLOR_SCROLLBAR) //
{
//pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0, 0, 0));
pDC->SetBkColor(RGB(233, 233, 220));
HBRUSH b = CreateSolidBrush(RGB(233, 233, 220));
return b;
}
else if (nCtlColor == CTLCOLOR_EDIT) //更改编辑框
{
//pDC->SetBkMode(TRANSPARENT);
pDC->SetTextColor(RGB(0, 0, 0));
pDC->SetBkColor(RGB(246, 246, 246));
HBRUSH b = CreateSolidBrush(RGB(246, 246, 246));
return b;
}
else if (nCtlColor == CTLCOLOR_STATIC) //更改静态文本
{
pDC->SetTextColor(RGB(0, 0, 0));
pDC->SetBkColor(RGB(217, 226, 241));
HBRUSH b = CreateSolidBrush(RGB(217, 226, 241));
return b;
}
else if (nCtlColor == CTLCOLOR_DLG) //更改对话框背景色
{
pDC->SetTextColor(RGB(0, 0, 0));
pDC->SetBkColor(RGB(166, 254, 1));
HBRUSH b = CreateSolidBrush(RGB(213, 226, 240));
return b;
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;