2012-05-25 146 views
1

在Windows(Windows 7和更高版本)上获取鼠标光标位置或按钮状态的最合适方式是什么?我以前使用DirectInput,但我不再使用它,不希望。我看到有GetCursorPos,但是,我没有看到任何获取鼠标按钮状态的东西。我之前读过的,只是阅读窗口消息(如WM_LBUTTONUP)被认为是实时应用程序的“缓慢”,所以我不知道任何其他选项。在Windows上获取鼠标光标位置和按钮状态

回答

5

如果要轮询/查询当前光标位置,可以使用GetCursorPos。要查看按钮状态,请使用GetAsyncKeyState

如果您正在窗口中实现消息循环,您将获得鼠标移动的通知是WM_MOUSEMOVE。您将通过列出的通知here收到鼠标输入通知。

+0

如果我正确记得,'GetCursorPos'将是最后处理的消息中的当前值。如果你想让键状态与位置保持一致,你应该使用'GetKeyState',它也是最后处理的消息的当前状态。 –

+0

@AdrianMcCarthy:不,“GetCursorPos”与“GetAsyncKeyState”一起使用,“GetMessagePos”与“GetKeyState”一起使用。 – jamesdlin

+0

@ jamesdlin:啊,谢谢你的纠正。 –

2

WM_LBUTTONUP与任何窗口消息一样好,因为窗口化游戏非常棒,因为它仅在鼠标单击客户区时才生成,所以您可以自由调整窗口大小并移动窗口。

作为替代直接输入,你可以用它占用更多的代码来初始化原料投入,但它去与鼠标的移动,因为WM_INPUT产生的最佳途径当物理移动鼠标,而不是光标,因此您可以将光标剪辑到客户端区域,而不用担心用户可能撞到剪辑矩形的一侧,并且鼠标移动消息不会再生成。 link