本文记录 WPF 用到的触摸的 COM 接口
用到了 WM_TABLET_ADDED 和 WM_TABLET_DELETED 消息
使用的代码是 src\Microsoft.DotNet.Wpf\src\PresentationCore\System\Windows\Input\Stylus\Wisp\WispLogic.cs
的 HandleMessage 方法
internal override void HandleMessage(WindowMessage msg, IntPtr wParam, IntPtr lParam)
{
switch (msg)
{
// 忽略代码
case WindowMessage.WM_TABLET_ADDED:
OnTabletAdded((uint)NativeMethods.IntPtrToInt32(wParam));
break;
case WindowMessage.WM_TABLET_DELETED:
OnTabletRemovedImpl((uint)NativeMethods.IntPtrToInt32(wParam), isInternalCall: true);
break;
}
}
包括:
基本引用代码在 src\Microsoft.DotNet.Wpf\src\PenImc\inc\tpcpen.h
文件,这是 WPF 的 PenImc 层
对此的封装是 src\Microsoft.DotNet.Wpf\src\PenImc\dll\PimcTablet.cpp
和 src\Microsoft.DotNet.Wpf\src\PenImc\dll\PimcManager.cpp
文件,封装依然作为 COM 方式提供
在框架顶层,在 src\Microsoft.DotNet.Wpf\src\PresentationCore\System\Windows\Input\Stylus\Wisp\PenImcRcw.cs
文件通过 COM 方法拿到
请看官方文档 COM API Used by Windows Presentation Foundation - Win32 apps