MFC 虚拟列表,颜色改变问题

之前我是通过重载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;