我已经创建了NM_CUSTOMDRAW消息处理程序来自定义绘制List-View控制子项。几乎可以。但是,我不能自定义绘制选中的项目。我的自定义设置始终被忽略,并且绘制了蓝色bkColor上的默认白色文本。
我是否有机会自定义绘制所选项目?
答案 0 :(得分:1)
我已成功编写代码,在OnCustomDraw()处理程序的CDDS_ITEMPREPAINT绘制阶段自定义绘制所选项目,并在选定项目绘制后返回CDRF_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);
}
这段代码到目前为止工作得很好。任何改进建议都受到热烈欢迎。