代码之家  ›  专栏  ›  技术社区  ›  olliej

如何在windows上检索触笔压力信息?

  •  6
  • olliej  · 技术社区  · 16 年前

    有没有人知道在Windows上获取平板电脑/触笔压力信息的明智方法?

    使用::GetMessageExtraInfo可以区分手写笔和鼠标,但除此之外,您无法获得更多信息。我还在Wacom站点的一个偏僻角落里找到了WinTab API,但据我所知,它不是windows的一部分,它有一个与消息队列完全不同的事件/消息系统。

    考虑到我想要的是最基本的压力信息,肯定有一个标准的Win32/COM API,有人知道它可能是什么吗?

    3 回复  |  直到 10 年前
        1
  •  2
  •   Zoltan Szilagyi    16 年前

    您需要使用Tablet PC笔/墨API。API的COM版本位于InkObj.dll中。以下是文档的起点: http://msdn.microsoft.com/en-us/library/ms700664.aspx

    如果我没记错的话,无论这台机器是不是平板电脑,InkObj.dll都可以在Windows XP SP2和所有更高版本的Windows客户端操作系统上使用。

        2
  •  2
  •   NateDSaint    12 年前

    更新:
    我最初提供这个答案已经有很多年了,但是wintab已经成为事实上的标准,Ntrig或多或少地折叠起来,最终构建了一个包装器,允许通过这个数字化器访问wintab API。
    ( http://www.tabletpcbuzz.com/showthread.php?37547-N-trig-Posts-WinTAB-Support-Driver )

    这是一个相当晚的回应,但最近我和妻子购买了一台戴尔XT平板电脑,事实证明它实际上使用了NTrig,一套使用Ink的接口,windows XP平板电脑版附带的新的windows API,然后是SP 2以及之后的所有版本。

    很多Wacom平板电脑和其他产品都使用Wintab API,目前还没有开放,也不允许使用。据我所知,那些维护它的人都很高兴。

    所以这取决于你使用的是哪种平板电脑,以及你为它安装的驱动程序。我有偏见地认为,你应该使用Ink,因为它提供了(或者至少通过NTrig和Windows7将提供)多点触控功能,并且很可能成为平板电脑界面的新标准。但到目前为止,NTrig设备并没有将它们的压力和角度信息转换为常见的基于Wintab的应用程序,如Photoshop或Corel Painter。这些应用程序往往需要至少对微软的Tablet API提供一些支持才能正常运行。

        3
  •  2
  •   kalbr    8 年前

    当前的方法是处理WM_pointernn msgs。 注意这是8胜及以后的比赛。

    注意,您将得到这些触摸和笔的msg,因此您需要知道指针类型以便测试笔。WWPAM接收WMPoPixNDNMSGS这样的WMyPoTeNebug和其他MSG包含指针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.
    
    }
    

    一旦你知道你正在处理笔,你可以从指针的压力信息结构。

    这类似于处理触摸,尽管对于触摸,您需要手势识别和惯性。有一个Microsoft示例演示如何使用这些函数。

    这是构建对话的一部分: https://channel9.msdn.com/Events/Build/2013/4-022

    推荐文章