CScrollBar 拇指跟踪不起作用

CScrollBar thumb tracking not working

本文关键字:不起作用 跟踪 CScrollBar      更新时间:2023-10-16

我正在尝试使用 CScrollBar 在对话框中导航项目列表。我在对话框中捕获了 OnVScroll 消息,滚动条正确响应单击栏顶部和底部的箭头,以及单击栏的范围以前进整页。问题是,当您尝试拖动拇指时,它根本不响应,直到您释放鼠标按钮,此时拇指移动到正确的位置。

我使用 spy++ 来查找WM_VSCROLL消息,似乎它们仅在您单击拇指和释放它时以SB_THUMBTRACK模式发送,而不是在拖动时发送。但是,CScrollBar 上的 msdn 页面说,在拖动拇指时,应连续发送这些消息。由于我没有收到这些消息,我不知道拇指在哪里,也无法设置当前位置。

我不认为这些消息在其他任何地方都被拦截,首先是因为 spy++ 即使我将其设置为记录所有消息也没有看到它们,其次是因为该栏在单击和发布时确实会获得两条 thumbtrack 消息。

无论是为对话框提供WS_VSCROLL样式还是创建 CScrollBar 并将其放置在对话框中,我都会遇到此问题。

我错过了什么吗?

确保不要将SB_THUMBTRACK与SB_THUMBPOSITION混淆。 前者是您想要的实时滚动,后者仅在用户释放滑块时发送。

您还可以检查性能设置(控制面板 -> 查看高级系统设置 -> 高级选项卡 -> 性能 -> 设置... ->视觉效果。 某些实时效果可能被禁用(如平滑滚动列表框,或其他效果,具体取决于您使用的 Windows 版本)。