应用程序疑难解答
本部分提供常见问题的解决方案。
常规故障排除
类别 | 说明 |
---|---|
问题 | 我正在运行 Windows Server 2008,并且 Windows Touch 功能不起作用。 |
原因 | 你尚未启用桌面体验。 |
解决方案 | 打开服务器管理器管理工具:单击“开始”,指向“管理工具”,然后单击“服务器管理器”。 单击左侧列中的 “功能” 项。 单击 “功能 ”部分中的“添加 功能 ”。 选择“ 桌面体验”,单击“ 下一步”,然后单击“ 安装”。 |
类别 | 说明 |
---|---|
问题 | 每当我在应用程序中快速移动手指时,都会出现一个箭头,并且手势或操作未正确注册。 |
原因 | 在不需要时启用轻拂。 |
解决方案 | 当你希望禁用它时,你已启用轻拂。 有关禁用笔击的信息,请参阅 旧版支持使用滚动条平移 。 |
问题 | 我无法辨别鼠标输入和 Windows Touch 输入。 | ||
原因 | 当用户单击屏幕时,Windows 会生成鼠标消息以获取旧版支持。 | ||
解决方案 | 可以为WM_LBUTTONDOWN调用 GetMessageExtraInfo,并WM_LBUTTONUP消息来确定源。 以下代码演示如何执行此操作。
|
类别 | 说明 |
---|---|
问题 | 如何实现 Windows 7 上运行 Microsoft PixelSense 应用程序? |
原因 | Windows Touch 和 Microsoft PixelSense 不兼容。 |
解决方案 | 你需要面向 Windows 7 平台或 Microsoft PixelSense 平台。 |
操作和惯性疑难解答
类别 | 说明 |
---|---|
问题 | 我的应用程序无缘无故冻结。 初始化对象接口时遇到访问冲突。 |
原因 | 在使用 IManipulationProcessor 或 IInertiaProcessor 接口时缺少对 CoInitialize的调用。 |
解决方案 | 这可能是由于在不调用 CoInitialize 的情况下将 Windows Touch 组件对象模型实例化 (COM) 对象导致的。 将项目从使用手势转换为使用操作或惯性接口时,有时会发生这种情况。 |
类别 | 说明 |
---|---|
问题 | 我的对象在翻译时旋转不当。 单指旋转无法正常工作。 |
原因 | 错误地在对象上设置透视。 |
解决方案 | 未正确设置操作透视点。 将 PivotPointX 和 PivotPointY 属性设置为要旋转的对象或点的中心,并将 PivotRadius 属性设置为对象的半径。 |
Windows 触控输入疑难解答
类别 | 说明 |
---|---|
问题 | 处理 WM_TOUCH 消息后,我停止获取边界反馈。 |
原因 | 使用 WM_TOUCH 消息而不处理它。 |
解决方案 | 你可能在未将 Windows Touch 消息转发到 DefWindowProc 的情况下使用 Windows Touch 消息,这将导致意外行为。 请查看 Windows 触控消息入门,详细了解如何正确处理WM_TOUCH消息。 |
问题 | 我包含 windows.h,但它仍然说 WM_TOUCH 未定义。 | ||
原因 | Targetver.h 中的 Windows 版本不正确。 | ||
解决方案 | 你尚未在项目中设置正确的 Windows 版本。 以下代码演示了在 Windows 7 中正确设置 Windows Touch 的 Windows 版本。
|
问题 | 我的触摸输入 x 坐标和 y 坐标似乎无效。 它们要么大于预期值,要么是负值。 | ||
原因 | 可能需要将触摸点转换为像素,或者可能需要转换屏幕坐标。 | ||
解决方案 | 请确保调用 TOUCH_COORD_TO_PIXEL 和 ScreenToClient。 下面的代码演示如何执行此操作。
注意: |
类别 | 说明 |
---|---|
问题 | 我没有看到 WM_TOUCH 消息,但我知道 Windows Touch 正在运行,因为我看到 WM_GESTURE 消息。 |
原因 | 缺少对 RegisterTouchWindow 的调用。 |
解决方案 | WM_TOUCH 和 WM_GESTURE 消息是互斥的。 如果不调用 RegisterTouchWindow,则只会收到 WM_GESTURE 消息。 |
类别 | 说明 |
---|---|
问题 | 从触摸手指到在应用程序中收到输入时,我注意到有一些延迟。 |
原因 | 手掌排斥导致输入延迟。 |
解决方案 | 如果在对 RegisterTouchWindow 的调用中设置了TWF_WANTPALM,则启用手掌拒绝。 这会导致 (100 毫秒) 延迟,而软件测试输入来自手指、笔还是用户的手掌。 通过调用 RegisterTouchWindow 禁用手掌拒绝,并清除 了TWF_WANTPALM 标志。 |
Windows 触控手势疑难解答
类别 | 说明 |
---|---|
问题 | 处理 WM_GESTURE 消息后,我停止获取边界反馈。 或者,以前工作的手势现在不起作用。 |
原因 | 使用 WM_GESTURE 消息而不处理它。 |
解决方案 | 你可能在未将 Windows Touch 消息转发到 DefWindowProc 的情况下使用 Windows Touch 消息,这将导致意外行为。 有关如何正确处理WM_GESTURE消息的详细信息,请查看 windows 手势入门。 |
类别 | 说明 |
---|---|
问题 | 我没有看到 WM_GESTURE 消息,但我知道 Windows Touch 正在运行,因为我看到 WM_TOUCH 消息。 |
原因 | 调用 RegisterTouchWindow。 |
解决方案 | WM_TOUCH 和 WM_GESTURE 消息是互斥的。 如果调用 RegisterTouchWindow,则不会收到 WM_GESTURE 消息。 |
问题 | 我没有看到我期望看到的所有手势。 例如,我看到具有标识符 的手势GID_PAN 但不 GID_ROTATE。 | ||
原因 | 默认情况下,某些手势(如旋转手势)未启用。 | ||
解决方案 | 收到WM_GESTURENOTIFY消息(如WM_GESTURENOTIFY参考中所述),或者需要为WM_GESTURENOTIFY消息添加处理程序时,需要调用 SetGestureConfig。 以下代码演示如何实现处理程序以启用对轮换的支持。
有关典型手势配置的更多示例,请参阅 SetGestureConfig。 |
类别 | 说明 |
---|---|
问题 | 执行平移手势时,应用程序中的自定义滚动条不会滚动。 |
原因 | 缺少正确WM_*SCROLL 消息的处理程序。 |
解决方案 | 你未在自定义滚动条中处理所有WM_*SCROLL 消息。 建议处理 WM_GESTURE 消息,而不是通过旧版支持保留自定义滚动条功能。 需要支持消息,详见 使用滚动条进行平移的旧版支持部分。 |
类别 | 说明 |
---|---|
问题 | 我因手势而出现延迟。 |
原因 | 轻拂可能会导致手势延迟。 |
解决方案 | 轻拂可能会导致应用程序接收 WM_GESTURE 消息所花费的时间延迟。 有关禁用轻 拂的信息,请参阅旧版支持使用滚动条平移 。 |
相关主题
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈