LVN_ITEMCHANGED通知会响应多次的问题
2011-04-14 10:36
645 查看
#define LVIF_STATE 0x0008 #define LVIS_FOCUSED 0x0001 #define LVIS_SELECTED 0x0002 // 在CListCtrl派生类中响应LVN_ITEMCHANGED消息 void CNewListCtrl::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult) { NMLISTVIEW* pNMListView = (NMLISTVIEW*)pNMHDR; // TODO: Add your control notification handler code here if(LVIF_STATE == pNMListView->uChanged && (pNMListView->uNewState & LVIS_SELECTED)) { int nItem = pNMListView->iItem; if(-1 != nItem) { int nSubItem = pNMListView->iSubItem; CString str; static int i = 0; str.Format(_T("Index: %d, item: %d, subitem: %d"), i++, nItem, nSubItem); GetParent()->SetWindowText(str); } } *pResult = 0; }
当从item = 0切换选择到item = 1的时候会响应三次LVN_ITEMCHANGED消息。如下所示:
(图 一)
(图 二)
(图 三)
在Debug调试模式下,参考(图 一)和(图 二)可以看到当从item = 0到item = 1的选择过程中,其中两次LVN_ITEMCHANGED消息会针对item = 0这一项,可以看到NMLISTVIEW这个结构体中的uOldState状态值由2 -> 1,即由LVIS_SELECTED状态转成LVIS_FOCUSED状态。第三次的LVN_ITEMCHANGED消息才是响应新item = 1的。可以从(图 三)看到uNewState的状态值为3.即(LVIS_FOCUSED | LVIS_SELECTED)两个相与的值。
相关文章推荐
- LVN_ITEMCHANGED通知会响应多次的问题
- LVN_ITEMCHANGED(OnItemchanged)通知响应多次的问题
- 单击ListCtrl时,LVN_ITEMCHANGED响应3次
- 大家有没有发现ListCtrl的LVN_ITEMCHANGED时间为什么连续响应3次,是不是vc的bug,急!!!
- 大家有没有发现ListCtrl的LVN_ITEMCHANGED时间为什么连续响应3次,是不是vc的bug,急!!!
- CListCtrl控件主要事件及LVN_ITEMCHANGED消息和鼠标双击列表项事件的处理
- CListCtrl控件主要事件及LVN_ITEMCHANGED消息和鼠标双击列表项事件的处理
- 解决C#中FileSystemWatcher类的Changed事件触发多次的问题。
- recyclerView调用notifyItemChanged导致屏幕闪烁的问题
- ListView的item点击事件不响应(你觉得应该响应的,但是就是没响应,而且不是代码问题)
- CListCtrl控件主要事件及LVN_ITEMCHANGED消息和鼠标双击列表项事件的处理
- 解决recyclerview notifyItemChanged 闪烁问题
- 解决WCF调用多次之后没有响应的问题 转
- 在ListView的item项里使用CheckBox或者Button时,OnItemClickListener无响应的问题
- 解决listview item Textview加超链接 超链接以外部分不响应listview item点击事件问题
- android listview的item布局中含有button,不会响应listview的onitemclick监听 以及 onitemlongclick监听问题解决
- android 自定义ListView 使其带单选框按钮,并解决item点击不响应的问题
- iOS 按钮、Cell暴力点击触发多次响应的问题研究
- CListCtrl控件主要事件及LVN_ITEMCHANGED消息和鼠标双击列表项事件的处理
- Android ListView的item背景色设置以及item点击无响应等相关问题