CListControl的OnMouseMove和OnNcHitTest
来源:互联网 发布:ubuntu安装的软件在哪 编辑:程序博客网 时间:2024/06/10 02:25
实际案例如下:
将CListCtrl做成菜单样式。需要处理当鼠标移到ClistCtrl上的事件。
处理逻辑这样:当鼠标移动到CListCtrl区域时候,将CListCtrl上所有ITem置为非选中状态,然后调用HitTest得到行数再将所选行置为选中状态。当鼠标移出ClistCtrl区域时候,将原来选中状态不变。
在实际做的过程中,在判断鼠标是否移到CListCtrl客户区域时候,误用WM_NCHITTEST消息判断,在OnNcHitTest里面处理选中逻辑。导致每次鼠标移出ClistCtrl会偶尔出现原来选中的行选中状态会消失。PS:SetItemState(i, 0, -1) 取消选中状态
后来在OnMouseMove处理,通过PtInRect判断鼠标在客户区,当在客户区的时候再处理逻辑,效果实现。
原因是由于鼠标在移出ClistCtrl区域的时候,偶尔会接触到CListCtrl的边界,触发WM_NCHITTEST,由于在OnNcHitTest的逻辑判断是将所有行置为非选中状态,并且所选行为-1,所以出现上述现象就不足为奇了
- CListControl的OnMouseMove和OnNcHitTest
- onmouseover 和onmousemove的区别
- onmouseover 和onmousemove的区别
- onmouseover 和onmousemove的区别
- CListControl的用法总结
- OnNcHitTest
- OnNcHitTest
- OnNcHitTest
- onMouseOver, onMouseMove, onMouseDown, onMouseUp, onMouseOut 的介绍和区别
- onMouseOver, onMouseMove, onMouseDown, onMouseUp, onMouseOut 的介绍和区别
- MFC的OnMouseMove移动位置和OnMouseWheel缩放实现
- 该实例演示了 onmousemove, onmouseenter 和 onmouseover 的不同。
- 关于VC中CListControl的不断插入和删除后内存不减的解决办法。
- OnMouseMove
- VC CListControl中按下Ctrl(或Shift)多选项目和取值的实现
- onmousemove与onmouseover的区别
- 鼠标事件onmousemove的clientY
- 教你在mfc中 怎么得到和处理 控件的消息,比如 cbutton 的 onmousemove
- 资金互助社业务学习园地(四)开办资金互助社所需的印章及印鉴
- 会员管理系统2010.3.5
- 2010-3-5 代码阅读 编译 学习
- 高效能管理之要事第一 时间管理表格
- 方法到习惯2010-03-05
- CListControl的OnMouseMove和OnNcHitTest
- Java未来发展方向
- Madlib及其之外
- ExtJs性能优化
- mediaCoder错误代码
- 使用Response.Filter 过滤非法词汇
- 因子和
- CGAL中的3D布尔运算
- 民工荒——一个时代的终结?