我有一个3 coloumns listview。 前两列有值,第三列是空的。 我想知道,我怎样才能插入一个彩色文本以后到第三列? 我不想着色整行,只有第三列改变颜色。
提前致谢!
kampi
理查德·哈里森在使用NM_CUSTOMDRAW
方面有正确的想法。
而不是重新实现所需的功能,但应考虑使用免费提供的CListView派生类型之一。
这是一个我认为可以满足你的需求的项目。
您可以使用CustomDraw处理程序执行此操作,请参阅: MSDN在Visual C ++中开发自定义绘图控件 。
基本上它很简单(和MSDN相当长),但归结为以下几点:
将其中的一个添加到通常的地方:
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW,OnCustomDraw)
然后将此方法添加到类中。
void CMyListView :: OnCustomDraw(NMHDR * nmhdr,LRESULT * result) { LPNMLVCUSTOMDRAW vcd =(LPNMLVCUSTOMDRAW)nmhdr; 开关(vcd-> nmcd.dwDrawStage) { 案例CDDS_PREPAINT: { *结果= CDRF_NOTIFYITEMDRAW; 打破; } 案例CDDS_ITEMPREPAINT: { vcd-> clrText = RGB(255,0,255); //改变第二行的颜色 *结果= CDRF_NOTIFYSUBITEMDRAW; 打破; } 默认: *结果= 0; 打破; } 返回; }