MFC中listctrol控件实现自带的垂直滚动条拖动和鼠标滚动事件响应

MFC中listctrol控件实现自带的垂直滚动条拖动和鼠标滚动事件响应

因为list控件里数据太多而出现的滚动条,并没有ID,所以我们不能像处理寻常控件那样来处理它,这时我们要用到ON_WM_VSCROLL来接收滚动条的拖动消息,拖动消息为WM_VSCROLL,但这样它会响应所有的滚动条,简单来说ON_WM_VSCROLL()这个消息映射是全局的,这是我找到的唯一办法,它只能响应拖动,滚动没有用,我滚动用的是重载PreTranslateMessage(MSG *pMsg),用它来拦截滚动消息(不能拦截拖动消息,因为拖动消息没有进消息队列)。
废话够了,直接上代码:

在这里插入图片描述
只能在CListCtrl的派生类中来响应WM_VSCROLL信号,图为响应函数执行内容,响应函数定义和消息映射这里就不做说明,直接定义就行,图中执行的为发送一个自定义信号给当前窗口,因为我的list控件还在该类的派生类中,不能直接来加载数据,具体看你怎么写,所以我是发一个信号用来被捕获来判断是否拖动事件发生。

在这里插入图片描述
这里重载PreTranslateMessage函数用来拦截信号,里面的话就用if来判断你要拦截的信号,再编写你将实现的功能,我的if判断的是鼠标滚动消息和自己上面自定义的消息。

总体的说,这样就能实现list控件里自带的滚动条拖动和滚动响应。

我是一个小白,这是我的第一篇博客,如果有哪讲的不够清楚的欢迎提出来,如果你有好的解决办法,也希望能跟我分享分享。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值