我在MFC的报表视图中创建了一个CListCtrl。 我想为第一列(完整列,不仅是那些项目所在的单元格)着色,背景为灰色。
我该怎么做? 感谢
答案 0 :(得分:0)
实现此方法的方法是分别为第一行的每个单元格着色。代码看起来像下面,基本上是蓝色打印,但它应该工作(注意:我没有测试这个帖子)。您必须使用lplvcd->iSubItem
并绘制每行的第一列。
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;
case CDDS_SUBITEM | CDDS_ITEMPREPAINT:
{
// something like if(lplvcd->iSubItem == 0 ) to paint first column
lplvcd->clrText = RGB(0,0,255);
*pResult = CDRF_NEWFONT;
return;
}
default:
break;
}
}
答案 1 :(得分:0)