当鼠标在MFC中靠近视图边界时如何自动滚动

时间:2012-04-17 16:15:04

标签: mfc scroll

在我的MFC应用程序的视图中,我可以通过点击和选择选择某个矩形区域。拖动。但是当用户想要选择比当前屏幕更大的区域时,他不能这样做,因为当鼠标指针靠近客户区域的边界时,视图不会自动滚动。

如何解决此问题?任何参考都足够了。

1 个答案:

答案 0 :(得分:1)

通常只有在用户按住鼠标按钮时才会执行此操作。在这种情况下,您通常希望在单击时捕获鼠标。然后,您将处理WM_MOUSEMOVE条消息。在您的情况下,您将比较鼠标的当前位置和窗口的边框,当它足够接近(例如,在10个像素内)时,您开始在该位置滚动。

我觉得有必要补充说,当你这么做时我会非常小心地控制滚动速度 - 有些程序滚动到目前为止这么快就会变得几乎无法使用,因为你已经接近窗口的边缘了,您已经将方式滚动到您想要的位置。其他人倾向于相反:无论你做什么,它们都会如此缓慢地滚动,以至于移动即使是很短的距离似乎也需要永远。

我怀疑获得“正确”速度是一个简单的答案。你通常想要一个渐变,所以当它们接近边界时,它会慢慢滚动,当它们靠近时,滚动变得更快。你仍然需要相当小心它的上限和下限,所以他们得到一个合理的速度范围,而不仅仅是从“哦,我将要到达那里”,直接到“哇,备份,那个方式已经太过了!“。