MFC 程序解决CListCtrl控件点击项重复执行的问题
2016-09-18 16:41
579 查看
来源:http://www.cnblogs.com/hongfei/archive/2012/12/25/2832806.html
LVN_ITEMCHANGED消息的处理
消息处理函数:
消息处理函数中的两个if条件句一定要有,否则可能出现多次进入处理内容的问题。
鼠标双击列表项事件的处理
响应NM_DBLCLK消息:
消息处理函数中的if语句很重要,用于判断双击位置是否在有数据的列表项上面。因为NM_DBLCLK消息是CListCtrl控件(整体)消息,只要是在CListCtrl控件范围之内执行此事件就会产生该消息,而不一定要在有数据的列表项上面。
LVN_ITEMCHANGED消息的处理
消息处理函数:
void C***Dlg::OnItemchangedList(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR; if(pNMListView->uChanged==LVIF_STATE) { if(pNMListView->uNewState & LVIS_SELECTED) { //处理内容 int nItem=pNMListView->iItem; CString value[6]; for(int i=0;i<6;i++) { value[i]=m_List.GetItemText(nItem,i); } } } *pResult = 0; }
消息处理函数中的两个if条件句一定要有,否则可能出现多次进入处理内容的问题。
鼠标双击列表项事件的处理
响应NM_DBLCLK消息:
void CDisSalaryDlg::OnDblclkList(NMHDR* pNMHDR, LRESULT* pResult) { NM_LISTVIEW *pNMListView=(NM_LISTVIEW *)pNMHDR; int nItem=pNMListView->iItem; if(nItem>=0 && nItem<m_List.GetItemCount())//判断双击位置是否在有数据的列表项上面 { ............. } *pResult = 0; }
消息处理函数中的if语句很重要,用于判断双击位置是否在有数据的列表项上面。因为NM_DBLCLK消息是CListCtrl控件(整体)消息,只要是在CListCtrl控件范围之内执行此事件就会产生该消息,而不一定要在有数据的列表项上面。
相关文章推荐
- 问题解决——MFC SDI程序 CFormView中控件随窗口缩放
- 添加RichEdit控件导致MFC对话框程序无法执行的解决方法
- 问题解决——MFC SDI程序 CFormView中控件随窗体缩放
- 解决IE浏览器 点击子元素重复调用执行 mouseover 与mouseout兼容性问题
- MFC关于解决点击关闭,对话框仍有后台程序运行问题 .
- 添加RichEdit控件导致MFC对话框程序无法执行的解决方法
- 解决VC++ MFC程序resource.h头文件中ID重复问题
- 解决Button多次点击重复执行方法的问题
- 解决MFC中CListCtrl(virtual)控件闪烁问题
- 添加RichEdit控件导致MFC对话框程序无法执行的解决方法
- 添加RichEdit控件导致MFC对话框程序无法执行的解决方法
- 解决 pb插入ole控件点击insert control时关闭他PB插入OCX控件程序崩溃问题
- MFC中使用串口控件后程序无法打开的问题解决
- 解决MFC中CListCtrl(virtual)控件闪烁问题
- 问题解决——MFC SDI程序 CFormView中控件随窗口缩放
- 添加RichEdit控件导致MFC对话框程序无法执行的解决方法
- MFC关于解决点击关闭,对话框仍有后台程序运行问题
- MFC项目使用webbrowser控件,点击载入的页面里的文件下载链接后导致程序的崩溃问题的解决方案
- 正试图在 os 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。问题的解决方法!
- Asp.net 2.0自定义控件(点击HyperLink后执行事件)[网友问题: DataList里HyperLink控件激发事件,在哪定义?]