如何根据listview中的值更改某些单元格的颜色
我已经用C创建了一个列表视图。单元格的颜色应该根据输入的值进行更改。我已经在使用下面的代码,但是它改变了整行,既不是单元格本身,也不是基于它的值如何根据listview中的值更改某些单元格的颜色,listview,winapi,colorize,Listview,Winapi,Colorize,我已经用C创建了一个列表视图。单元格的颜色应该根据输入的值进行更改。我已经在使用下面的代码,但是它改变了整行,既不是单元格本身,也不是基于它的值 case NM_CUSTOMDRAW: { NMLVCUSTOMDRAW* plvCstDrawPtr = reinterpret_cast<NMLVCUSTOMDRAW*>(nmheader); if( plvCstDr
case NM_CUSTOMDRAW:
{
NMLVCUSTOMDRAW* plvCstDrawPtr = reinterpret_cast<NMLVCUSTOMDRAW*>(nmheader);
if( plvCstDrawPtr->nmcd.dwDrawStage == CDDS_PREPAINT )
{
return CDRF_NOTIFYITEMDRAW;
}
else if( plvCstDrawPtr->nmcd.dwDrawStage == CDDS_ITEMPREPAINT )
{
if( plvCstDrawPtr->nmcd.dwItemSpec & 1 )
{
plvCstDrawPtr->clrTextBk = RGB( 255, 0, 0);
}
}
break;
}
我需要一个代码来根据值而不是索引更改颜色。使用LVM_GETITEM获取值。如果listview是所有者数据,则需要查找用于填充listview的内容。祝你好运我可以得到这个值,我想根据这个值给单元格上色,我不知道你的困惑在哪里。你有这个值,你有给文本上色的代码;把两者放在一起,我想给一个特定的单元格上色,而不是整行。上面显示的代码使包含行中所有单元格的行变为红色。您没有处理与CDDS_子项相关的绘图阶段。CDDS_PREPAINT需要返回CDRF_NOTIFYITEMDRAW以便接收CDDS_ITEMPREPAINT,然后需要返回CDRF_NOTIFYSUBITEMDRAW以便接收CDDS_SUBITEM | CDDS_ITEMPREPAINT。阅读文档: