Winapi 如何在Windows列表视图控件中自定义绘制选定项行

Winapi 如何在Windows列表视图控件中自定义绘制选定项行,winapi,mfc,Winapi,Mfc,我已经为自定义绘图列表视图控件子项创建了NM_CUSTOMDRAW消息处理程序。差不多可以了。但是,我无法自定义绘制选中的项目。我的自定义设置始终被忽略,并在蓝色上绘制默认白色文本 我是否有机会自定义绘制所选项目?我已成功编写代码,在OnCustomDraw()处理程序的CDDS\u ITEMPREPAINT draw阶段自定义绘制所选项目,并在绘制所选项目后返回CDRF\u SKIPDEFAULT: int subitemCount = GetHeaderCtrl().GetItemCount

我已经为自定义绘图列表视图控件子项创建了NM_CUSTOMDRAW消息处理程序。差不多可以了。但是,我无法自定义绘制选中的项目。我的自定义设置始终被忽略,并在蓝色上绘制默认白色文本


我是否有机会自定义绘制所选项目?

我已成功编写代码,在OnCustomDraw()处理程序的CDDS\u ITEMPREPAINT draw阶段自定义绘制所选项目,并在绘制所选项目后返回CDRF\u SKIPDEFAULT:

int subitemCount = GetHeaderCtrl().GetItemCount();
CRect itemRect;
for (int i = 0; i < subitemCount; i++) // Draw individual subitem
{
    if (i == 0)
    {
        // My own function
        // calculate correct rect for first(index=0) subitem
        CalculateItemRect(nIndex, itemRect);
    }
    else if (!GetSubItemRect(nIndex, i, LVIR_BOUNDS, itemRect))
    {
        return;
    }

    // Adjust text rect to avoid overlapping with vertical grid line
    itemRect.left += 6;
    dc.DrawText(GetItemText(nIndex, i), itemRect, DT_LEFT | DT_NOCLIP | DT_VCENTER | DT_SINGLELINE | DT_END_ELLIPSIS);
}
int subitemCount=GetHeaderCtrl().GetItemCount();
正确无误;
for(int i=0;i
到目前为止,该代码运行良好。欢迎提出任何改进建议