获取当前光标位置

I P*_*m I 51 c++ winapi

我想得到窗口的当前鼠标位置,并将其分配给2个变量xy(相对于窗口的坐标,而不是整个屏幕).

我正在使用Win32和C++.

还有一个快速的奖励问题:你将如何隐藏光标/取消隐藏?

Dav*_*nan 112

通过调用获得光标位置GetCursorPos.

POINT p;
if (GetCursorPos(&p))
{
    //cursor position now in p.x and p.y
}
Run Code Online (Sandbox Code Playgroud)

这将返回相对于屏幕坐标的光标位置.调用ScreenToClient地图到窗口坐标.

if (ScreenToClient(hwnd, &p))
{
    //p.x and p.y are now relative to hwnd's client area
}
Run Code Online (Sandbox Code Playgroud)

隐藏并显示光标ShowCursor.

ShowCursor(FALSE);//hides the cursor
ShowCursor(TRUE);//shows it again
Run Code Online (Sandbox Code Playgroud)

您必须确保每次隐藏光标的调用都与再次显示该调用的调用相匹配.

  • 我对downvote的猜测是,GetCursorPos检索屏幕坐标,同时明确询问窗口坐标.您的答案中缺少`ScreenToClient` /`MapWindowPoints`. (3认同)
  • @Sertac谢谢,我错过了. (2认同)

Mik*_*wan 13

如果传入指向POINT结构的指针,GetCursorPos()将返回x/y.

可以使用ShowCursor()隐藏光标.

  • 最后一句话让我发笑. (19认同)