我想将第一列的背景涂成灰色。 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;
}
}
谁能解释我该如何解决?
最佳答案
无法通过自定义绘制完成此操作。
即使使用ownerdraw,例程也仅用于存在项。要给空闲区域着色,您可能需要覆盖WM_ERASEBKGND,并且需要在其中做您自己的事情。
关于c++ - 颜色CListCtrl列不带CDDS_ITEMPREPAINT阶段的背景,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20369713/