我想画第一列灰色的背景。 CDDS_ITEMPREPAINT的问题是,如果有项目,它只会为背景着色。就像这样:
目前,这是我的代码:
{
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;
}
}
任何人都可以解释我如何解决这个问题吗?
答案 0 :(得分:1)
使用自定义绘图无法实现此目的。
即使使用ownerdraw,例程也只会调用exisitng项目。要为自由区域上色,你可能需要覆盖WM_ERASEBKGND,你需要在那里做自己的东西。