2

我正在尝试使用 SetCursorPos 在光标到达屏幕边缘时移动光标位置(用于滑动控件);标准的“跟踪直到边缘被击中,将光标移动到屏幕中间”的东西。

问题是 Windows 会在收到鼠标事件后立即将光标位置重置回原来的位置。

出于调试目的,我使用以下代码制作了一个测试应用程序:http: //msdn.microsoft.com/en-us/library/windows/desktop/ms648380 (v=vs.85).aspx#_win32_Using_the_Keyboard_to_Move_the_Cursor

这向我展示了相同的行为:我使用鼠标将光标停在窗口的左上角(文件菜单的右下方),然后使用键盘将光标移到任何位置。但是只要我触摸鼠标,光标就会回到左上角。

这显然对我使用鼠标擦洗的控件没有帮助。

如何让 Windows 接受我的 SetCursorPos 立场作为事实?

谢谢!

4

1 回答 1

0

使用 SetCursorPos 通常可以正常工作(即使使用它通常被认为是不好的风格。)不过,某些设备(例如 Wacom 数位板)会发送绝对位置。一旦设备发送一个新的位置,光标就会跳回来。如果是这种情况,你真的无能为力。

但是,我是否正确假设您这样做是因为您正在尝试检测光标的速度?如果是这样,您可能应该使用不同的 API 来为您提供低级值,而根本不需要使用光标的位置。看看 DirectInput!

于 2013-10-02T06:52:38.510 回答