如何让CListCtrl选中行恒保持其蓝色高亮状态?

来源:互联网 发布:loveless world知乎 编辑:程序博客网 时间:2024/05/17 11:36
为CListCtrl控件添加NM_CUSTOMDRAW事件响应函数,这样当我们点击界面的其他地方地方时,列表中的选中项仍处于选中状态。
void CMainFrame::OnNMCustomdrawRecQueryList(NMHDR *pNMHDR, LRESULT *pResult){NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );*pResult = CDRF_DODEFAULT;if ( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage ){*pResult = CDRF_NOTIFYITEMDRAW;}else if ( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage ){*pResult = CDRF_NOTIFYSUBITEMDRAW;}else if ( (CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage ){COLORREF clrNewTextColor, clrNewBkColor;int nItem = static_cast<int>( pLVCD->nmcd.dwItemSpec );POSITION pos = m_lstRecQueryRes.GetFirstSelectedItemPosition();int index = m_lstRecQueryRes.GetNextSelectedItem(pos);        if (index == nItem)//如果要刷新的项为当前选择的项,则将文字设为白色,背景色设为蓝色{clrNewTextColor = RGB(255,255,255);//Set the text to whiteclrNewBkColor = RGB(49,106,197);//Set the background color to blue}else{clrNewTextColor = RGB(0,0,0);//set the text blackclrNewBkColor = RGB(255,255,255);//leave the background color white}pLVCD->clrText = clrNewTextColor;pLVCD->clrTextBk = clrNewBkColor;*pResult = CDRF_DODEFAULT;}}
CListCtrl m_lstRecQueryRes//控件变量
阅读全文
0 0