【问题标题】:CScrollBar thumb tracking not workingCScrollBar 拇指跟踪不起作用
【发布时间】:2012-04-28 21:38:21
【问题描述】:

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

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

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

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

我有什么遗漏吗?

【问题讨论】:

    标签: c++ mfc scrollbar


    【解决方案1】:

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

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

    【讨论】:

    • SB_THUMBPOSITION 正常触发,但是当拇指被单击并释放时,我也收到了 SB_THUMBTRACK。平滑滚动已启用,更改它不会影响我的问题。
    猜你喜欢
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2016-12-23
    • 2016-07-10
    相关资源
    最近更新 更多