1

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

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

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

无论我给对话框 WS_VSCROLL 样式还是创建一个 CScrollBar 并将它放在对话框中,我都会遇到这个问题。

有什么我想念的吗?

4

1 回答 1

2

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

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

于 2012-04-17T18:14:55.107 回答