本文记录 WPF 用到的触摸的 COM 接口
消息
用到了 WM_TABLET_ADDED 和 WM_TABLET_DELETED 消息
使用的代码是 srcMicrosoft.DotNet.WpfsrcPresentationCoreSystemWindowsInputStylusWispWispLogic.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;
}
}
接口
包括:
- ITablet Interface
- ITablet2 Interface
- ITablet3 Interface
- ITabletContextP Interface
- ITabletCursor Interface
- ITabletCursorButton Interface
- ITabletEventSink Interface
- ITabletManager Interface
基本引用代码在 srcMicrosoft.DotNet.WpfsrcPenImcinctpcpen.h
文件,这是 WPF 的 PenImc 层
对此的封装是 srcMicrosoft.DotNet.WpfsrcPenImcdllPimcTablet.cpp
和 srcMicrosoft.DotNet.WpfsrcPenImcdllPimcManager.cpp
文件,封装依然作为 COM 方式提供
在框架顶层,在 srcMicrosoft.DotNet.WpfsrcPresentationCoreSystemWindowsInputStylusWispPenImcRcw.cs
文件通过 COM 方法拿到
请看官方文档 COM API Used by Windows Presentation Foundation - Win32 apps