问题标签 [wm-touch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1758 浏览

c# - 在 C# / .NET 中为 PostMessage() 创建 WM_TOUCH 消息

(有关背景,请参阅为 SendMessage() 编写 WM_TOUCH 消息,Kinect 作为多点触控设备,它提出的问题与我的基本相同,但其接受的答案实际上并没有回答问题。棘手的一点是没有填写TOUCHINPUT结构但制作一个有效的触摸输入句柄。)

我想以一种令人讨厌的骇人听闻的方式模拟多点触控输入设备的存在,大致如下:

棘手的是标记为“...”的空间中的内容。从消息消费者的角度来看,MSDN 文档毫不奇怪,它WM_TOUCH说消息lParamWM_TOUCH

一个触摸输入句柄,可用于调用以GetTouchInputInfo检索有关与此消息关联的触摸点的详细信息。

我可以很容易地制作,例如,一个结构数组TOUCHINPUT,这就是GetTouchInputInfo给你的。但这似乎与“触摸输入句柄”完全不同。(例如,触摸输入句柄必须是正确的东西才能传递给CloseTouchInputHandle,据称PostMessageSendMessage将这样做。)

用户代码是否有可能(官方或非官方!)生成可以传递给的有效触摸输入句柄PostMessage如果是这样,怎么做?

0 投票
1 回答
865 浏览

c++ - Windows multi touch TOUCHEVENTF_UP not received

I am working on an app for Windows that supports multitouch. I have followed the guide found here

http://msdn.microsoft.com/en-us/library/windows/desktop/dd744775(v=vs.85).aspx

but i have a problem. At some point there is a stuck finger meaning that i can see that there is a TOUCHEVENTF_DOWN, a TOUCHEVENTF_MOVE but NO TOUCHEVENTF_UP for this finger although there is no fingers any more on the screen...

I have:

After touching the screen i end up with no actual fingers on the screen but with the variable fingers != 0....

I would appreciate some help. Thanks.

P.S. I applied the proposed change but i still get stuck fingers, no finger up received.

0 投票
1 回答
292 浏览

touch - WM_TOUCH 在 Windows-8.1 中的行为不同

我有一个使用 WM_TOUCH 消息处理触摸屏的 Windows 应用程序。

它在 Windows 7 和 Windows 8.0 中运行良好。

在 Win 8.1 中,WM_TOUCH 的行为有所不同: Win7:当我触摸窗口时,连续收到带有 eTouchDown 标志的 WM_TOUCH Win8.1:只收到一次带有 eTouchDown 标志的 WM_TOUCH

Win7:当我抬起手指时收到带有标志 eTouchUp 的 WM_TOUCH Win8.1:当我抬起手指时未收到带有标志 eTouchDown 的 WM_TOUCH

Windows 文档未指出 Windows 8.1 中 WM_TOUCH 行为的任何更改。

我希望在 Win7、Win8 和 Win8.1 上运行相同的应用程序,因此使用带有 WM_POINTER 的较新 API 是不可行的。

我很高兴知道这是否是一个已知问题,以及是否有办法让 WM_TOUCH 在 Windows 8.1 中正常工作。

非常感谢,罗特姆

0 投票
2 回答
3770 浏览

winapi - WM_TOUCH 与 WM_POINTER

我应该使用哪一个?我只使用 Windows 8.x,所以我不关心 WM_POINTER 不向后兼容 Windows 7 等的事实。我也不关心手势;仅关于原始接触。WM_POINTER 唯一明显的优势似乎是它统一了触摸和鼠标输入(但是使用 WM_TOUCH 很容易解决这个问题,因为可以使用 GetMessageExtraInfo() 检查鼠标事件)。易用性也不是问题;我已经在使用 WM_TOUCH,我只是想知道是否应该切换到 WM_POINTER。我最关心的是延迟和效率(与游戏相关的应用程序)。我不知道 WM_POINTER 是否是 WM_TOUCH 的包装器,它有额外的开销。任何意见?

0 投票
1 回答
4059 浏览

c# - c# WndProc 和 PreFilterMessage 中的 WM_TOUCH 消息

我正在尝试使用 WM_TOUCH 消息来捕获我的应用程序中的触摸事件。例如,我想注册一个“3 手指滑动”手势,因为 WM_GESTURE 中没有给出这个手势,所以我开始尝试使用 WM_TOUCH。我发现了这个例子http://msdn.microsoft.com/en-us/library/windows/desktop/dd940546%28v=vs.85%29.aspx这个例子的问题是,他们使用的 WndProc 只适用于个别形式。我想捕捉整个应用程序中的内容,所以我尝试使用 PreFilterMessage 而不是 WndProc。

现在的问题是,当我尝试调用时, in与导致问题的LParaminPreFilterMessage不同。这是我的调试日志:LParamWndProcGetTouchInputInfo

为什么LParam鼠标输入相同,而触摸输入不同?如何转换 PreFilterMessage 中的 LParam 以便我可以调用GetTouchInputInfo

0 投票
1 回答
1693 浏览

c++ - (如何)我可以在 Windows 上模拟触摸事件吗?

我用 C++ 编写的用于测试目的的实用程序当前使用该SendInput函数来模拟用户输入,即鼠标和键盘事件。我现在想扩展我的程序,使其能够模拟触摸事件,这样我就可以验证测试程序WM_TOUCH是否正确处理例如消息(尽管该消息已被弃用,但我仍然想验证它是否被正确处理) . 我不需要能够将触摸事件发送到特定的HWND,只需将它们发送到桌面上的某些 X/Y 坐标就足以满足我的目的。

我考虑使用HARDWAREINPUT结构SendInput以及直接发送WM_TOUCH(或WM_GESTURE?)消息,但无论哪种情况,我都不清楚如何传递有关触摸事件在何处或如何执行的信息。

WM_TOUCH文档解释了该lParam论点:

包含一个触摸输入句柄,可用于调用 GetTouchInputInfo 以检索有关与此消息关联的触摸点的详细信息。

...但尚不清楚我是否以及如何自己分配这样的“触摸输入句柄”。它总是只是当前进程地址空间中的一个普通指针吗?hSource如果是这样,我应该为结构的字段使用什么值TOUCHINPUT

0 投票
0 回答
195 浏览

c++ - 使用 WM_TOUCH 实现缩放

我需要在多点触控屏幕上运行的 Windows 应用程序中实现放大/缩小。

经过一些进步,我明白我不能同时拥有 WM_GESTURE 和 WM_TOUCH 。在我捕捉 WM_GESTURE 然后检查是否正在发送 GID_ZOOM 之前,但知道我必须以另一种方式放大和缩小。

我现在应该如何使用 WM_TOUCH 来实现它?

谢谢你们!

0 投票
1 回答
490 浏览

delphi - Delphi VCL - WM_Touch RegisterTouchWindow(Handle, 0); 触摸面板时不会处理消息

我正在使用 Delphi 10.1 Berlin,VCL 项目。我正在尝试使用触摸屏和从 Windows 生成的 WM_Touch 消息同时移动多个面板。我基于 Chris Benson 博客中的示例代码:http: //chrisbensen.blogspot.com/2009/11/touch-demo.html

只有当我先触摸背景表单上的某个位置,然后将手指拖到面板上时,它才会在一定程度上起作用。如果我先触摸背景,面板将用我的手指移动。据我所知,当我触摸窗体顶部的面板时,似乎不会调用 TForm1.WMTouch 过程。除非我先触摸表单,否则我不会收到 WM_Touch 消息。

在 Chris 的博客中,他调用了 RegisterTouchWindow(Handle, 0); 在表单创建中。我认为这就是为什么当您触摸表单时会调用该程序的原因。每当我触摸面板时,我将如何调用 WM_Touch 过程?

- 我尝试使用面板的 OnClick 事件,但这不起作用,因为它似乎没有将触摸注册为 OnClick 事件。

- 这是我应该使用继承类的东西吗?如果是这样,我将如何去做?

提前感谢您的任何想法!