如何在mfc中更改列表控件中的突出显示颜色 [英] How to change highlight color in list control in mfc

查看:284
本文介绍了如何在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


这篇关于如何在mfc中更改列表控件中的突出显示颜色的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆