oll*_*iej 6 winapi tablet stylus-pen
有人知道在Windows上获得平板电脑/手写笔压力信息的明智方法吗?
可以使用:: GetMessageExtraInfo来区分手写笔和鼠标,但除此之外您无法获得更多信息.我还在Wacom站点的一个角落找到了WinTab API,但据我所知,这不是Windows的一部分,并且在消息队列中有一个完全不同的事件/消息系统.
鉴于我想要的是最基本的压力信息肯定有一个标准的Win32/COM API,是否有人知道它可能是什么?
小智 5
当前的方法是处理 WM_POINTERnnn 消息。请注意,这适用于 Win 8 及更高版本。
请注意,您将收到触摸和笔的这些消息,因此您需要知道指针类型才能测试笔。WNDPROC 收到的 WM_POINTERnnnn 消息(例如 WM_POINTERUPDATE 和其他消息)的 WPARAM 包含指针 id,您需要该指针 id 来请求更多信息。根据经验,我发现 WM_POINTERUPDATE 会产生包含压力数据的信息,而如果指针标志指示向下/向上,则没有压力信息。
const WORD wid = GET_POINTERID_WPARAM(wParam);
POINTER_INFO piTemp = {NULL};
GetPointerInfo(wid, &piTemp);
if (piTemp.pointerType == PT_PEN
{
UINT32 entries = 0;
UINT32 pointers = 0;
GetPointerFramePenInfoHistory(wid, &entries, &pointers, NULL); // how many
// TODO, allocate space needed for the info, process the data in a loop to retrieve it, test pointerInfo.pointerFlags for down/up/update.
}
Run Code Online (Sandbox Code Playgroud)
一旦你知道你正在处理笔,你就可以从 POINTER_PEN_INFO 结构中获取压力信息。
这与处理触摸类似,尽管对于触摸,您需要手势识别和惯性。有一个 Microsoft 示例说明了如何使用这些函数。
这是构建演讲的一部分: https ://channel9.msdn.com/Events/Build/2013/4-022
您需要使用 Tablet PC Pen/Ink API。API 的 COM 版本位于 InkObj.dll 中。这是文档的起点:http://msdn.microsoft.com/en-us/library/ms700664.aspx
如果我没记错的话,InkObj.dll 在 Windows XP SP2 和所有更高版本的 Windows 客户端操作系统上都可用,无论计算机是否是平板电脑。