我有3个coloumns的列表视图。前两列有值,第三列是空的。我想知道,我怎样才能在第三列中插入彩色文本?我不想为整行着色,只有第三列有颜色变化。
提前致谢!
kampi
答案 0 :(得分:5)
您可以使用CustomDraw处理程序执行此操作,参考:MSDN Developing Custom Draw Controls in Visual C++。
基本上它很简单(而MSDN很长)但归结为以下几点:
将其中一个添加到通常位置:
ON_NOTIFY_REFLECT(NM_CUSTOMDRAW, OnCustomDraw)
然后将此方法添加到类中。
void CMyListView::OnCustomDraw(NMHDR* nmhdr, LRESULT* result) { LPNMLVCUSTOMDRAW vcd = (LPNMLVCUSTOMDRAW)nmhdr; switch(vcd->nmcd.dwDrawStage) { case CDDS_PREPAINT : { *result = CDRF_NOTIFYITEMDRAW; break; } case CDDS_ITEMPREPAINT: { vcd->clrText = RGB(255,0,255); //change the colour of the second row. *result = CDRF_NOTIFYSUBITEMDRAW; break; } default: *result = 0; break; } return; }
答案 1 :(得分:0)
NM_CUSTOMDRAW
时有正确的想法。
虽然您应该考虑使用一种免费提供的CListView派生类型,而不是重新实现所需的功能。
Here is a project我认为会满足您的需求。