【问题标题】:Windows 8 Getting Absolute X Y Coordinates of Touchscreen (regardless of window) [duplicate]Windows 8获取触摸屏的绝对XY坐标(不考虑窗口)[重复]
【发布时间】:2013-05-14 21:53:52
【问题描述】:

过去几天我一直在浏览 MSDN/Google,但一直找不到这个问题的答案。

我希望在由 Windows 8 提供支持的触摸屏设备上获取触摸/多次触摸的 XY 坐标。关于如何向特定窗口添加触摸句柄的指南有很多,但我想创建依赖于触摸输入的应用程序,无论哪个窗口/应用程序是焦点/被触摸的窗口/应用程序。

基本上,我正在寻找最低级别的触摸 API。有人有什么想法吗?谢谢!

【问题讨论】:

  • 只需将触摸消息坐标从客户端转换为屏幕坐标。但是还有一点你还没有解释:你打算如何捕获其他窗口的触摸事件?
  • 这是我的全部问题:) 如果我想要一个窗口的屏幕坐标,我会被设置!但我希望获得触摸输入,即使窗口最小化!
  • 在担心如何转换坐标(ClientToScreen 负责)之前,您应该先考虑获取输入。这就像问你没有钱怎么花一样。
  • 我完全同意这就是为什么在我的问题中没有提到“转换”并且它指出“有很多关于如何向特定窗口添加触摸手柄的指南,但我想创建一个依赖于触摸输入的应用程序,无论哪个窗口/应用程序是焦点/被触摸的窗口/应用程序。”
  • 我想我误解了这个问题。我以为您是在问如何转换已经捕获的坐标,而不是首先问如何捕获它们。您不应该窃取其他应用程序的输入。如果有人窃取了你的输入,你会怎么想? (想象一下,如果两个人这样做。)

标签: windows winapi touch gesture touchscreen


【解决方案1】:

最简单的方法是使用“旧版”(Windows 7) API。这样一来,您将收到作为WM_TOUCH 消息的触摸输入。

您在调用 GetTouchInputInfo 时使用该消息的 lParam。

这会返回一个TOUCHINPUT 结构数组,每个结构都包含一个xy 坐标(这似乎是无用/虚幻精度的记录,其精度为百分之一像素)。

对于新应用,Microsoft 建议使用指针输入 API。有了这个,你会收到messages,比如WM_POINTERDOWNWM_POINTERUPWM_POINTERUPDATE。有了这些,消息的 lParam 包含输入的单个 x/y 点。有关该位置的更完整信息,您可以调用 GetPointerInfo 以检索 POINTER_INFO 结构中输入的坐标。

【讨论】:

  • 我非常感谢杰瑞的快速回答!我试着调查 WM_TOUCH。我正在寻找一个应用程序,它可以获取触摸的 x/y 坐标,即使它被最小化。我可能是错的(实际上我希望我错了!)但从它的外观来看,WM_TOUCH 消息仅在窗口本身发生触摸时触发。如果我错了,那就太棒了!如果我是对的,那么也许有办法绕过窗口?
猜你喜欢
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 2011-07-15
相关资源
最近更新 更多