使用MFC和Visual Studio 2010 C++。我需要一种方法来使CListCtrl的某些单独的行脱颖而出(但我不想使用内置的选择功能来突出显示行)。它可能是行背景的颜色,或字体重量,甚至可能是图像(如果这是高性能的)。MFC:如何更改ListCtrl的单行行的颜色/粗体?
理想情况下,我想知道如何使用股票列表控件做到这一点。但是,如果这是不可能的,那么让我知道使用第三方代码的方式。
UPDATE
这里是我最后使用的代码:
void MyList::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVCUSTOMDRAW* cd = reinterpret_cast<NMLVCUSTOMDRAW*>(pNMHDR);
*pResult = CDRF_DODEFAULT;
switch(cd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
{
int rowNumber = cd->nmcd.dwItemSpec;
bool highlightRow = (bool)GetItemData(rowNumber);
if (highlightRow)
{
COLORREF backgroundColor;
backgroundColor = RGB(255, 0, 0);
cd->clrTextBk = backgroundColor;
}
}
break;
default:
break;
}
}
在我而言,我是不使用的ItemData什么,所以我在其他地方被称为SetItemData一个布尔值指示行是否应该突出显示。
这确实正是我头一点;-)关于'GetItemData(ROWNUMBER)',你不把它在'CD-> nmcd.lItemlParam' – 2012-01-17 20:52:03
@塞尔日 - appTranslator可供选择:好点啊,会保存一个电话。我必须尝试。 – User 2012-01-18 01:36:38