我有3個色彩的列表視圖。前兩列有值,第三列有空。我想知道,我如何在第三欄中插入彩色文本?我不想對整行進行着色,只需要更改顏色的第三列。如何在一個ListView中插入彩色文本?
在此先感謝!
kampi
我有3個色彩的列表視圖。前兩列有值,第三列有空。我想知道,我如何在第三欄中插入彩色文本?我不想對整行進行着色,只需要更改顏色的第三列。如何在一個ListView中插入彩色文本?
在此先感謝!
kampi
@Richard Harrison在使用NM_CUSTOMDRAW
時有正確的做法。
而不是重新實現所需的功能,儘管您應該考慮使用免費提供的CListView派生類型之一。
Here is a project我認爲會滿足您的需求。
您可以用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; }
嗨!在此期間,我發現與您的代碼非常相似。但我的問題是,你的代碼是每隔一行着色,我發現着色整列。我如何在給定的行和行中檢查我的listview的值是多少?這很重要,因爲我想根據文字的內容對文字進行着色。謝謝! – kampi 2010-02-17 20:13:56
非常感謝!這是我需要的。再次感謝! – kampi 2010-02-18 17:52:16