NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
*pResult = 0; switch(pLVCD->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW; // ask for item otifications.
break; case CDDS_ITEMPREPAINT:
*pResult = CDRF_NOTIFYSUBITEMDRAW;
break;
case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
{
int nItem = static_cast<int>(pLVCD->nmcd.dwItemSpec);// nItem表示item的index
if (nItem == 1)
{
pLVCD->clrTextBk = RGB(25,25,250);
}
TRACE(_T("行号:"));//%d,状态:%d\r\n"),nItem,GetItemState(nItem,LVIS_SELECTED));
if (GetItemState(nItem, LVIS_SELECTED)==LVIS_SELECTED) {
pLVCD->clrTextBk = RGB(200,200,200); // cr1和cr2分别为高亮显示时的文本和背景色,自己查一下
}
}
*pResult = CDRF_DODEFAULT;
break;
default:
*pResult = CDRF_DODEFAULT;
}
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
*pResult = 0; switch(pLVCD->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW; // ask for item otifications.
break;
case CDDS_ITEMPREPAINT:
*pResult = CDRF_NOTIFYSUBITEMDRAW;
break;
case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
{
int nItem = static_cast<int>(pLVCD->nmcd.dwItemSpec);// nItem表示item的index
if (nItem == 1)
{
pLVCD->clrTextBk = RGB(25,25,250);
}
if (GetItemState(nItem, LVIS_SELECTED)==LVIS_SELECTED)
{
pLVCD->clrTextBk = RGB(200,200,200); //选中项的颜色
}
}
*pResult = CDRF_DODEFAULT;
break;
default:
*pResult = CDRF_DODEFAULT;
}
}
为什么在第一行可以正确显示,而在选中项的颜色却无法改变,都是默认的颜色。
*pResult = 0; switch(pLVCD->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW; // ask for item otifications.
break; case CDDS_ITEMPREPAINT:
*pResult = CDRF_NOTIFYSUBITEMDRAW;
break;
case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
{
int nItem = static_cast<int>(pLVCD->nmcd.dwItemSpec);// nItem表示item的index
if (nItem == 1)
{
pLVCD->clrTextBk = RGB(25,25,250);
}
TRACE(_T("行号:"));//%d,状态:%d\r\n"),nItem,GetItemState(nItem,LVIS_SELECTED));
if (GetItemState(nItem, LVIS_SELECTED)==LVIS_SELECTED) {
pLVCD->clrTextBk = RGB(200,200,200); // cr1和cr2分别为高亮显示时的文本和背景色,自己查一下
}
}
*pResult = CDRF_DODEFAULT;
break;
default:
*pResult = CDRF_DODEFAULT;
}
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
*pResult = 0; switch(pLVCD->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYITEMDRAW; // ask for item otifications.
break;
case CDDS_ITEMPREPAINT:
*pResult = CDRF_NOTIFYSUBITEMDRAW;
break;
case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
{
int nItem = static_cast<int>(pLVCD->nmcd.dwItemSpec);// nItem表示item的index
if (nItem == 1)
{
pLVCD->clrTextBk = RGB(25,25,250);
}
if (GetItemState(nItem, LVIS_SELECTED)==LVIS_SELECTED)
{
pLVCD->clrTextBk = RGB(200,200,200); //选中项的颜色
}
}
*pResult = CDRF_DODEFAULT;
break;
default:
*pResult = CDRF_DODEFAULT;
}
}
为什么在第一行可以正确显示,而在选中项的颜色却无法改变,都是默认的颜色。
http://www.codeproject.com/KB/list/CListCtrl_subItem_focus.aspx
http://www.codeproject.com/KB/list/lvcustomdraw.aspx
不过改变颜色后一定要刷新一下,否则不一定生产。