【问题标题】:Mouse coordinates related to the window与窗口相关的鼠标坐标
【发布时间】:2015-01-29 05:05:15
【问题描述】:

我可以通过什么方式获取与活动窗口相关的鼠标坐标(尤其是行和列)(假设 0x0 是窗口的左上角)?

【问题讨论】:

  • 哪个操作系统?哪个框架(如果有)?

标签: c console mouse console-application


【解决方案1】:

这篇文章可能适合您的需求:

Get current cursor position

请注意,Win32 为 C 和 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

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

【讨论】:

  • 为什么要隐藏/显示光标?要获取行/列中的位置,我是划分还是有特定的方式?
  • 它是从提供的链接复制粘贴,以节省您的精力。 GetCursorPos 接收 en/out 参数,该参数指向一个包含光标相对于屏幕坐标的结构。同样适用于 ScreenToClient,但现在第一个参数是窗口上的处理程序,因此该函数可以知道您想要的亲属坐标。 “列”和“行”是什么意思?
  • colums 是 y 处的当前行字符,lines 是 x 处的当前字符。
  • 哈好吧,对不起,我现在才明白你想要实现什么。我想不出任何简单或实用的东西。也许这个:stackoverflow.com/questions/5616821/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 2014-04-24
  • 1970-01-01
相关资源
最近更新 更多