【发布时间】:2011-09-19 09:43:46
【问题描述】:
我想获取窗口的当前鼠标位置,并将其分配给两个变量x 和y(相对于窗口的坐标,而不是相对于整个屏幕的坐标)。
我使用的是 Win32 和 C++。
还有一个小问题:你将如何隐藏/取消隐藏光标?
【问题讨论】:
我想获取窗口的当前鼠标位置,并将其分配给两个变量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
您必须确保每次隐藏光标的调用都与再次显示光标的调用匹配。
【讨论】:
ScreenToClient/MapWindowPoints。
如果你传入一个指向 POINT 结构的指针,GetCursorPos() 将返回给你 x/y。
可以使用ShowCursor()来隐藏光标。
【讨论】: