2012-04-17 21 views
0

在我的MFC应用程序的视图中,我可以选择特定的矩形区域并单击&拖动。但是当用户想要选择比当前屏幕更大的区域时,他不能这样做,因为当鼠标指针接近客户区域的边界时,视图不会自动滚动。如何自动滚动鼠标在MFC中的视图的边界附近

我该如何解决这个问题?任何参考就足够了。

回答

1

通常情况下,只有当用户按住鼠标按钮时才会执行此操作。既然如此,您通常需要在点击时捕获鼠标。然后您将处理WM_MOUSEMOVE消息。在你的情况下,你会将鼠标的当前位置与窗口边界进行比较,当它足够接近时(例如,在10个像素内),你就开始在那个位置上滚动。

我觉得有必要补充一点,当你这样做的时候,我会非常小心地控制滚动速度 - 一些程序滚动得太快以至于几乎无法使用,因为当你接近边缘时窗口,你已经滚动方式过去你想要的地方。其他人倾向于相反:不管你做什么,他们滚动得如此之慢,以至于移动一小段距离似乎都是永远。

我怀疑有一个简单的答案来获得“正确”的速度。你通常需要一个渐变,所以当它们靠近边界时,它会慢慢滚动,当它们靠近时,滚动变得更快。尽管如此,你仍然需要相当小心,因为它们能够获得合理的速度范围,而不仅仅是从“哦,我是否会到达那里”直接跳到“whoa,备份,那就是的方式已经太过分了!“。

+0

感谢您的回答和解释。我完全理解你在说什么。我想我必须以编程方式处理鼠标移动消息上的滚动。这将是棘手的。 – 2012-04-17 21:47:12

相关问题