如何在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