Хочу закрасить фон первой колонки серым. Проблема с 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;
}
}
Может кто-нибудь объяснить мне, как решить эту проблему?
Нет способа сделать это с помощью пользовательского розыгрыша.
Даже с владельцемdraw рутины вызываются только для существующих предметов. Чтобы раскрасить свободную область, вам, возможно, придется перезаписать WM_ERASEBKGND, и вам нужно будет делать свои собственные вещи там.
Других решений пока нет …