我想获取窗口的当前鼠标位置,并将其分配给 2 个变量x
和y
(相对于窗口的坐标,而不是整个屏幕的坐标)。
我正在使用 Win32 和 C++。
还有一个快速的奖励问题:你将如何隐藏/取消隐藏光标?
你可以通过调用获取光标位置GetCursorPos
。
POINT p;
if (GetCursorPos(&p))
{
//cursor position now in p.x and p.y
}
这将返回相对于屏幕坐标的光标位置。调用ScreenToClient
以映射到窗口坐标。
if (ScreenToClient(hwnd, &p))
{
//p.x and p.y are now relative to hwnd's client area
}
你可以使用 隐藏和显示光标ShowCursor
。
ShowCursor(FALSE);//hides the cursor
ShowCursor(TRUE);//shows it again
你必须确保每次隐藏光标的调用都与再次显示光标的调用相匹配。
我对 downvote 的猜测是,GetCursorPos 检索屏幕坐标,而问题明确询问窗口坐标。
ScreenToClient
/MapWindowPoints
在您的答案中丢失。如果隐藏和显示调用不匹配会发生什么?即使在窗口/程序关闭后,它是否也会隐藏光标?
如果你像我发现这个时一样使用 OpenGL,你可能会发现GetClientRect(HWND, LPRECT)和我在翻转鼠标 y 坐标时发现的一样有用。干杯