如何强制Windows在SetCursorPos之后忘记旧的鼠标位置?

时间:2013-07-15 21:30:03

标签: c++ windows user-interface

我正在尝试使用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位置为真理?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用SetCursorPos通常可以正常工作(即使使用它通常被认为是糟糕的风格。)但是,某些设备(如Wacom平板电脑)会发送绝对位置。一旦设备发送新位置,光标就会跳回。如果是这种情况,你真的无法帮助。

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