【发布时间】:2011-01-17 23:09:35
【问题描述】:
我有一个包含 3 个列的列表视图。前两列有值,第三列是空的。我想知道,我以后如何在第三列中插入彩色文本?我不想给整行上色,只给第三列上色。
提前致谢!
坎皮
【问题讨论】:
我有一个包含 3 个列的列表视图。前两列有值,第三列是空的。我想知道,我以后如何在第三列中插入彩色文本?我不想给整行上色,只给第三列上色。
提前致谢!
坎皮
【问题讨论】:
您可以使用 CustomDraw 处理程序执行此操作,参考:MSDN Developing Custom Draw Controls in Visual C++。
基本上它很简单(而且 MSDN 很长),但归结为以下几点:
将其中之一添加到通常的位置:
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)然后将此方法添加到类中。
无效 CMyListView::OnCustomDraw(NMHDR* nmhdr, LRESULT* 结果) { LPNMLVCUSTOMDRAW vcd = (LPNMLVCUSTOMDRAW)nmhdr; 开关(vcd->nmcd.dwDrawStage) { 案例 CDDS_PREPAINT : { *结果 = CDRF_NOTIFYITEMDRAW; 休息; } 案例 CDDS_ITEMPREPAINT: { vcd->clrText = RGB(255,0,255); //改变第二行的颜色。 *结果 = CDRF_NOTIFYSUBITEMDRAW; 休息; } 默认: *结果 = 0; 休息; } 返回; }【讨论】:
@Richard Harrison 使用NM_CUSTOMDRAW 的想法是正确的。
尽管您应该考虑使用免费提供的 CListView 派生类型之一,而不是重新实现所需的功能。
Here is a project 我认为可以满足您的需求。
【讨论】: