如何让ListCtrl控件失去焦点后还高亮,据说需要重绘,但遇到问题
我派生了CListCtrl类,ClistCtrlEx,然后在它里面使用如下:
afx_msg void OnCustomDraw(NMHDR*,LRESULT*);
....
//消息映射
ON_NOTIFY_REFLECT(NM_CUSTIOMDRAW,OnCUstomDraw)
....
//函数
void CListCtrlEx::OnCustonDraw(NMHDR* pNMHDR,LRESULT* pResult)
{
LPNMLVCUSTOMDRAW lpLvcd=(LPNMLVCUSTOMDRAW)pNMHDR;
switch(lpLvcd->nmcd.dwDrawStage)
{
case CDDS_PREPAINT:
*pResult=CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT:
**pResult=CDRF_NOTIFYITEMDRAW;
break;
case CDDS_ITEMPREPAINT | CDDS_SUBITEM:
//在这里重绘
//如何判断是对选中的Item进行重绘,我不会
。。。。。。。。。。
lpLvcd->clrText=RGB(0,0,0);// 黑色字体
lpLvcd->clrTextBk=RGB(0,0,255);//蓝色背景
*pResult=CDRF_DODEFULT;
break;
default:
*pResult=CDRF_DODEFULT;
break;
}
}
然后在主函数中定义: CListCtrlEx m_ctrlList;
以上代码都是网上找的,确实可以重绘,但是没有写如何重绘,重绘失去焦点的项目。
我猜应该是在失去焦点的事件中重绘,然后再判断是哪个选中了。上面的是把所有所有项都重绘了。