如何在mfc中更改列表控件中的突出显示颜色
问题描述:
在基于MFC对话框的应用程序中,我覆盖了listcontrol的NM_CUSTOMDRAW,并在下面的代码中尝试更改列表控件的高亮颜色,但高亮颜色没有变化。
In MFC dialog based application I overrided NM_CUSTOMDRAW of listcontrol and tried below code to change the highlight color of list control but the highlight color is not changing.
void CMyDialog::OnNMCustomdrawList1(NMHDR *pNMHDR, LRESULT *pResult)
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
*pResult = CDRF_DODEFAULT;
switch(pLVCD->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult = CDRF_NOTIFYSUBITEMDRAW; // ask for subitem notifications.
break;
case CDDS_ITEMPREPAINT:
*pResult = CDRF_NOTIFYSUBITEMDRAW;
break;
case CDDS_SUBITEM | CDDS_ITEMPREPAINT:
{
if((m_ctrlAllTagsList.GetItemState(pLVCD->nmcd.dwItemSpec, LVIS_SELECTED) & LVIS_SELECTED))
{
pLVCD->clrTextBk = RGB(255,0,0);//GetSysColor(COLOR_HIGHLIGHTTEXT);
pLVCD->clrText = GetSysColor(COLOR_HIGHLIGHTTEXT);
*pResult =CDRF_NEWFONT;
}
break;
}
default:
break;
}
}
答
快速观察 - 代码应返回CDRF_NOTIFYITEMDRAW以响应CDDS_PREPAINT
Just a quick observation -- the code should return CDRF_NOTIFYITEMDRAW in response to CDDS_PREPAINT