Windows 10
在个人计算机和平板电脑上运行的 Microsoft 操作系统。
62 个问题
我现在面临了一个问题是在Windows系统 .NET6 WPF程序中如何获取TouchScreen设备未经过系统处理的原始数据,或者是否存在标准触摸协议作为参考以便于我能通过API接口获取到的处理后的数据重新转化为处理前的原始数据呢?
你好,在.NET 6 WPF应用程序中,要获取未经过系统处理的原始触摸数据并不直接支持,因为Windows操作系统通常会对触摸数据进行处理和抽象化,以提供更简单、更一致的接口供应用程序使用。你可以尝试通过Win32 API来获取更接近于原始触摸数据的信息。
TouchDown
、TouchMove
和 TouchUp
等触摸事件,以获取触摸操作的信息。这些事件提供了已处理的触摸数据,但不是原始数据。RegisterTouchWindow
函数注册窗口以接收原始触摸输入,并使用 GetTouchInputInfo
函数来获取原始触摸数据。不确定你的具体代码,下面是一个简单的示例:
protected override void OnSourceInitialized(EventArgs e)
{
base.OnSourceInitialized(e);
HwndSource hwndSource = PresentationSource.FromVisual(this) as HwndSource;
if (hwndSource != null)
{
hwndSource.AddHook(WndProc);
RegisterTouchWindow(hwndSource.Handle, 0);
}
}
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
switch ((WindowMessages)msg)
{
case WindowMessages.WM_TOUCH:
// 处理触摸消息
handled = true;
break;
}
return IntPtr.Zero;
}
[DllImport("user32.dll")]
private static extern bool RegisterTouchWindow(IntPtr hWnd, uint flags);
private enum WindowMessages : int
{
WM_TOUCH = 0x0240
}
希望这对你有所帮助。
希望这对你有所帮助。 如果回复有帮助,请单击“接受答案”并投赞成票。
注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。