ListCtrl 的 LVN_ITEMCHANGED 误区
来源:互联网 发布:损不足以奉有余 知乎 编辑:程序博客网 时间:2024/05/25 21:35
ListCtrl 的 LVN_ITEMCHANGED 误区
http://hankersyan.spaces.live.com/blog/cns!5e5b72df778bf6e6!112.entry
为了CListCtrl能响应 单击选中事件 和 键盘上下键 事件,使用 ON_NOTIFY 的 LVN_ITEMCHANGED 事件似乎可以解决问题, 但是由于 LVN_ITEMCHANGED 能响应太多行为致使函数被多次触发(如: 由没选中到选中触发一次;由选中一行到选中另一行触发三次;选中到不选中再触发一次),从而影响效率。
可以用 ON_NOTIFY(NM_CLICK, IDC_XXX , OnClickXXX) 和 WM_KEYUP + VK_UP + VK_DOWN 来分别响应。注意这里不是 WM_KEYDOWN, 因为KeyDown的时候, 选中状态还没有从一行移到另一行。
ON_NOTIFY(NM_CLICK, IDC_LIST, OnClickList)
BOOL CXXXDlg::PreTranslateMessage(MSG* pMsg)
{
if(pMsg->message == WM_KEYUP)
{
if(pMsg->wParam == VK_UP || pMsg->wParam == VK_DOWN)
{
if(pMsg->hwnd == m_list.m_hWnd)
{
NMHDR nm;
LRESULT lr;
memset(&nm, 0, sizeof(NMHDR));
memset(&lr, 0, sizeof(LRESULT));
OnClickList(&nm, &lr);
}
}
}
return CDialog::PreTranslateMessage(pMsg);
}
- ListCtrl 的 LVN_ITEMCHANGED 误区
- 单击ListCtrl时,LVN_ITEMCHANGED响应3次
- 大家有没有发现ListCtrl的LVN_ITEMCHANGED时间为什么连续响应3次,是不是vc的bug,急!!!
- LVN_ITEMCHANGED通知会响应多次的问题
- LVN_ITEMCHANGED通知会响应多次的问题
- ListCtrl的总结
- ListCtrl的总结
- ListCtrl的总结
- ListCtrl的使用
- ListCtrl的总结
- ListCtrl控件的使用
- ListCtrl的总结
- listctrl 列的颜色
- 更改listctrl的图标
- 关于listctrl的用法
- 学习ListCtrl 的用法
- ListCtrl 的总结
- ListCtrl的基本用法
- exe4j: 让你的class变成exe可执行文件
- Silverlight 版本间的区别
- 使用wpf 的datagrid 对选择的数据操作
- PostMessage 和 SendMessage 区别
- DeskView是第一个运用插件技术的桌面管理产品
- ListCtrl 的 LVN_ITEMCHANGED 误区
- OpenMP程序设计
- SQL语言基础考核(二)(oracle)
- 在WinForm应用程序中实现自动升级
- About AssemblyINfo.cs Access
- EditPlus编译和运行JAVA程序
- Your Alternative for the Magento Enterprise Edition
- 四种获取Class对象的方法 Java反射机制
- ASP.NET - 视图状态概述