2012-04-17 88 views
1

我想使用CScrollBar导航对话框中的项目列表。我正在捕捉对话框中的OnVScroll消息,并且滚动条正确地响应以单击条顶部和底部的箭头,并单击条的范围以完整页面前进。问题在于,当您尝试拖动拇指时,直到松开鼠标按钮才会响应,此时拇指移动到正确的位置。CScrollBar拇指跟踪不起作用

我用spy ++来查找WM_VSCROLL消息,看起来他们只是在你点击拇指,当你释放它而不是在拖动的时候,才用SB_THUMBTRACK模式发送。然而,CScrollBar上的msdn页面表示,这些消息应该在拖动拇指时连续发送。由于我没有收到这些消息,我不知道拇指在哪里,也无法设置当前位置。

我不认为邮件在其他地方被截取,首先是因为即使设置为记录所有邮件,spy ++也没有看到邮件,其次是因为当单击并释放时,栏会收到两条thumbtrack邮件。

我有这个问题,无论我给对话框的WS_VSCROLL风格,或者我创建一个CScrollBar并将其放置在对话框中。

有什么我失踪了吗?

回答

1

确保您不会将SB_THUMBTRACK与SB_THUMBPOSITION混淆。前者是您实时滚动所需的内容,而后者仅在用户释放滑块时才发送。您可能还会检查性能设置(控制面板 - >查看高级系统设置 - >高级选项卡 - >性能 - >设置... - >视觉效果。可能会禁用一些实时效果(例如Smooth-scroll列表框,或者其他的,取决于你使用的Windows版本)。

+0

SB_THUMBPOSITION正常触发,但是当鼠标点击并释放时,我还接收到SB_THUMBTRACK。平滑滚动已经启用,改变它并不影响我的问题。 – 2012-04-17 18:52:06

相关问题