0

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

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

4

1 回答 1

1

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

我觉得有必要补充一点,当你这样做时,我会非常小心地控制滚动速度——一些程序滚动得太快以至于几乎无法使用,因为当你接近窗口边缘的那一刻,你已经滚动到您想要的位置其他人则倾向于相反:无论您做什么,它们滚动的速度都非常慢,以至于即使移动很短的距离也似乎需要永远。

我怀疑有一个简单的答案来获得“正确”的速度。您通常确实需要渐变,因此当它们接近边界时,它会缓慢滚动,而当它们靠近时,滚动会变得更快。不过,您仍然需要对它的上限和下限相当小心,这样它们才能获得合理的速度范围,而不仅仅是从“哦,我能到达那里吗”,直接跳到“哇,备份,这已经太远了!”。

于 2012-04-17T16:34:15.423 回答