gpt4 book ai didi

c# - 什么是 Windows 消息 0x02c8 和 0x02c9?

转载 作者:行者123 更新时间:2023-11-30 23:07:22 26 4
gpt4 key购买 nike

我有一个 winforms 应用程序,它在连接到工业机器的 PC 上运行。有多台计算机通过显示 channel 切换设备和USB输入切换设备连接。这意味着计算机在没有屏幕或连接任何输入设备的情况下启动。

我们遇到的问题是托管的 WPF 组件。该组件在连接触摸设备之前初始化。连接触摸设备后,除了 WPF 组件(它响应普通鼠标)外,一切都可以控制。

这样的解决方案看起来很简单,在连接触摸设备后重新初始化 WPF 组件。所以我们尝试重写 WndProc 方法,如下所示。使用 pinvoke.net 中的 WindowsMessage 枚举.

protected override void WndProc(ref Message m)
{
DateTime currentTime = DateTime.Now;
Console.WriteLine($"#{currentTime.Minute}:{currentTime.Second}.{currentTime.Millisecond} WndProc: {m.Msg} ==> {(WindowsMessage)m.Msg}");
Console.WriteLine($"#Number of touches: {GetSystemMetrics(SystemMetric.MAXIMUMTOUCHES)}.");
Console.WriteLine($"#TabletMode: {GetSystemMetrics(SystemMetric.TABLETPC)}.");

base.WndProc(ref m);
}

连接触摸设备会生成多个 (4-5) DEVICECHANGE 消息以及 number of touches 的混合结果,范围从全 0、全 1 或最佳case a 与最后一个 10 的混合。Tabletmode 要么关闭,要么在最好的情况下打开。在 number of touches 大于 0 之前,很多时候它看起来都是半随机且不可靠的。

示例输出:

#36.810 WndProc: 537 ==> DEVICECHANGE
#Number of touches: 0.
#TabletMode: 0.
#36.827 WndProc: 537 ==> DEVICECHANGE
#Number of touches: 0.
#TabletMode: 0.
#36.866 WndProc: 537 ==> DEVICECHANGE
#Number of touches: 0.
#TabletMode: 0.
#36.876 WndProc: 537 ==> DEVICECHANGE
#Number of touches: 0.
#TabletMode: 0.
#36.976 WndProc: 712 ==> 712
#Number of touches: 0.
#TabletMode: 0.

幸运的是,每次我插入和拔出触摸设备时,我还会收到消息 0x02c8 (712)0x02c9 (713)。这感觉像是某种触摸设备已连接触摸设备已断开 消息,但windows 消息 枚举没有这些消息。环顾四周,我实际上找不到包含它们的 windows 消息 列表。我什至查看了我的 WinUser.h 文件。

按照标题,有谁知道这些窗口消息是什么?

最佳答案

我的怀疑是正确的,来自 tpcshrd.h:

#define WM_TABLET_DEFBASE                    0x02C0
#define WM_TABLET_MAXOFFSET 0x20
#define WM_TABLET_ADDED (WM_TABLET_DEFBASE + 8)
#define WM_TABLET_DELETED (WM_TABLET_DEFBASE + 9)
#define WM_TABLET_FLICK (WM_TABLET_DEFBASE + 11)
#define WM_TABLET_QUERYSYSTEMGESTURESTATUS (WM_TABLET_DEFBASE + 12)

关于c# - 什么是 Windows 消息 0x02c8 和 0x02c9?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47408856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com