【问题标题】:What happens when the stylus "lifts" on a tablet PC?当手写笔在平板电脑上“抬起”时会发生什么?
【发布时间】:2008-09-17 06:23:34
【问题描述】:

我正在VC++/Win32/MFC 处理一个遗留项目。最近要求应用程序在tablet pc上工作,这带来了许多新问题。 我已经能够处理并解决这些问题,但我还剩下一个我可以使用一些专家建议的问题。

我有一个特定的错误,它是由触控笔从活动表面“抬起”引起的。基本上,鼠标光标会消失,然后当您将其“按”回屏幕时重新出现。

这是有道理的,这是在应用程序中下落不明。您不能抬起台式电脑上的光标。所以我正在寻找的是一个很好的概述,当电梯发生时会发生什么(在 Windows 消息等方面)。这是否仅转化为焦点更改和鼠标悬停事件?我的错误似乎也涉及光标更改(尽管可能与提升无关)。当然,意外的“提升”正在破坏应用程序工具处理的状态。

所以具体的问题是:

  1. 当触笔“抬起”时会发生什么?媒体?
  2. 可以使用哪些 API 调用来检测这种情况?它是否只是转换为设置了标志/值的标准消息?
  3. 当您的开发电脑是台式机时,有什么好的方法来测试/模拟这个?我只是在这里瞎飞吗? (我只能定期使用平板电脑)
  4. 什么代表正确的行为或平板电脑手写笔意识的最佳实践?

感谢您的考虑, 呃

【问题讨论】:

  • 不幸的是,我必须在这里迎合最低公分母。 90% 的用户将使用 XP(或更早版本),因此检测和功能必须主要来自 windows api,并且不会干扰桌面用户(只有一小部分会使用平板电脑运行应用程序)。

标签: c++ windows events tablet-pc stylus-pen


【解决方案1】:

作为平板电脑用户,我可以回答您的一些问题。

第一:

当触控笔必须移出焦点窗口才能按下虚拟键盘上的键时,您不能很容易地将“键盘焦点”保持在窗口上。

我使用的大多数虚拟键盘(Windows 平板电脑输入面板和 ubuntu 下的一个)允许他们输入的程序保持“键盘焦点”。

当手写笔“抬起”时会发生什么?媒体?

在 Windows 下,压力值下降,但除此之外,没有任何事件。 (我不了解linux。)

可以使用哪些 API 调用来检测这一点?它是否只是转换为设置了标志/值的标准消息?

如上所述,如果你能得到压力值,你就可以使用它。

当您的开发电脑是台式机时,有什么好的方法来测试/模拟这个?我只是在这里瞎飞吗? (我只能定期使用平板电脑)

当手写笔放在别处时,指针的全局坐标会发生变化,因此,您可以使用任何允许您更改全局指针值的东西来模拟突然的指针移动。 (Java 中的 Robot 类使这变得相当容易。)

什么代表平板电脑手写笔意识的正确行为或最佳实践?

我建议您阅读 Microsoft 所说的,MSDN 网站上有许多优秀的文章。 (http://msdn.microsoft.com/en-us/library/ms704849(VS.85).aspx) 我要指出的是,应用程序上按钮的大小会产生巨大的影响。

希望这对您有所帮助。

【讨论】:

  • 由于这是一个遗留应用程序,因此有代码会监视光标离开活动窗口并据此更改工具状态。这可能是“键盘焦点”问题的一部分,但我已经解决了这部分问题。关于 API 调用以获得压力水平的任何想法?
【解决方案2】:

据我了解,没有“抬起”事件 - 唯一的事件发生在稍后将触控笔带回屏幕时。当然,这取决于您的具体驱动程序等等。

更糟糕的是,您描述的错误可能仅用典型的鼠标即可重现。尝试尽可能快地移动鼠标——它几乎肯定会一次跳跃几个像素。如果您将鼠标设置配置为最高指针速度,甚至几十个或数百个。一次更新,鼠标可能在 100,100。下一次更新,可能是 200,300。

【讨论】:

  • 根据我的经验,它似乎(在重现错误的机器上)与“快速鼠标移动”相同。如果我没记错的话,光标实际上从屏幕上消失了。
【解决方案3】:

在 Windows 下,压力值下降,但除此之外,没有任何事件。 (我不了解linux。)

在 linux 下你会得到“ProximityEvents”

这些事件 WT_PROXIMITY 很可能在 Windows 中可用(请参阅:http://www.wacomeng.com/devsupport/ibmpc/wacomwindevfaq.html

【讨论】:

    【解决方案4】:

    @Greg - 澄清一下,这是一台内置集成平板电脑和手写笔的笔记本电脑。该设备没有专用键盘(它是触摸屏上的虚拟键盘),也不是 wacom 输入设备。很抱歉造成混乱。

    似乎有一个SDK 用于 Microsoft Windows XP Tablet PC Edition,它可能具有获取压力等特殊细节的能力。但是,我知道必须与现有的非平板电脑感知应用程序具有某种程度的标准兼容性。我想我可以尝试在平板电脑上安装 Spy++ 并尝试过滤到特定的消息/事件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-03
      • 2012-08-31
      • 1970-01-01
      • 2014-09-09
      • 1970-01-01
      • 2017-04-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多