如何让CListCtrl选中行恒保持其蓝色高亮状态?
2017-06-26 11:53
295 查看
为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 white clrNewBkColor = RGB(49,106,197); //Set the background color to blue } else { clrNewTextColor = RGB(0,0,0); //set the text black clrNewBkColor = RGB(255,255,255); //leave the background color white } pLVCD->clrText = clrNewTextColor; pLVCD->clrTextBk = clrNewBkColor; *pResult = CDRF_DODEFAULT; } }
CListCtrl m_lstRecQueryRes//控件变量
相关文章推荐
- 让CListCtrl选中行恒保持其蓝色高亮状态
- cxGrid失去焦点后如何继续保持选中单元的高亮状态
- 让CListCtrl选中行保持其蓝色高亮状态
- cxGrid失去焦点后如何继续保持选中单元的高亮状态
- 如何datagrid分页保持每页先前选择的checkbox的状态?
- 如何保持ListView中选中的Item高亮
- 如何记录ListView滚动后CheckBox保持选中状态以及当全选后让滚动出来的item也被选中
- (原创)如何datagrid分页保持每页先前选择的checkbox的状态?
- 如何通过回顾保持学习状态
- 如何让wp7真机调试时候保持屏幕高亮不锁屏
- 如何datagrid分页保持每页先前选择的checkbox的状态?
- 如何保持屏幕高亮
- Coding4Fun控件系列:在导航出页面后再导航回来的时候如何保持MessagePrompt的状态
- 如何datagrid分页保持每页先前选择的checkbox的状态?
- 如何让在客户端改变的状态保持连续性
- 非托管C++调用 Webservice,如何解决状态保持的问题
- Flex中如何让TextInput被选中文本保持选中状态而不管控件是否获得焦点的例子
- 动态增加的DropDownList如何保持状态
- 也谈如何保持DataGrid选择后的状态
- 动态增加的DropDownList如何保持状态