Color CListCtrl列没有CDDS_ITEMPREPAINT阶段的背景

时间:2013-12-04 07:40:24

标签: c++ mfc clistctrl

我想画第一列灰色的背景。 CDDS_ITEMPREPAINT的问题是,如果有项目,它只会为背景着色。就像这样:

enter image description here

目前,这是我的代码:

{
LPNMLVCUSTOMDRAW pNMLVCD = reinterpret_cast<LPNMLVCUSTOMDRAW>(pNMHDR);
    *pResult = CDRF_DODEFAULT;
    switch (pNMLVCD->nmcd.dwDrawStage)
    {
    case CDDS_PREPAINT:
        *pResult = CDRF_NOTIFYITEMDRAW;
        break;

    case CDDS_ITEMPREPAINT:
        *pResult = CDRF_NOTIFYSUBITEMDRAW;
        break;

    case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
        if (pNMLVCD->iSubItem == 0)
        {
            pNMLVCD->clrTextBk = RGB(97,97,97);
        }
        else
        {
            pNMLVCD->clrTextBk = RGB(255,255,255);
        }
        break;
    }
}

任何人都可以解释我如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

使用自定义绘图无法实现此目的。

即使使用ownerdraw,例程也只会调用exisitng项目。要为自由区域上色,你可能需要覆盖WM_ERASEBKGND,你需要在那里做自己的东西。