排除故障应用程序
本部分提供常见问题的解决方案。
常规故障排除
类别 | 说明 |
---|---|
问题 | 我正在运行 Windows Server 2008,Windows Touch 功能不起作用。 |
原因 | 您尚未启用桌面体验。 |
解决方案 | 打开服务器管理器管理工具:单击开始,指向管理工具,然后单击服务器管理器。 单击左侧列中的功能项。 单击功能部分中的添加功能。 选择桌面体验,单击下一步,然后单击安装。 |
类别 | 说明 |
---|---|
问题 | 每当我在应用程序中快速移动手指时,将会显示一个箭头,但我的手势或操作未能正确注册。 |
原因 | 在不需要时启用轻触功能。 |
解决方案 | 当你想禁用它时,却启用了轻触功能。 有关禁用笔触的信息,请参阅对使用滚动条平移的旧版支持。 |
问题 | 我无法区分鼠标输入和 Windows Touch 输入。 | ||
原因 | 当用户单击屏幕上时,Windows 将为旧版支持生成鼠标消息。 | ||
解决方案 | 您可以为 WM_LBUTTONDOWN 和 WM_LBUTTONUP 消息调用 GetMessageExtraInfo 来确定源。 下面的示例演示了如何实现这一点。
|
类别 | 说明 |
---|---|
问题 | 如何实现在 Windows 7 上运行 Microsoft PixelSense 应用程序? |
原因 | Windows Touch 和 Microsoft PixelSense 不兼容。 |
解决方案 | 您需要面针对 Windows 7 平台或 Microsoft PixelSense 平台。 |
操作和惯性疑难解答
类别 | 说明 |
---|---|
问题 | 我的应用程序无故冻结。 我在初始化对象接口时,出现访问冲突。 |
原因 | 在使用 IManipulationProcessor 或 IInertiaProcessor 接口时,缺少对 CoInitialize 的调用。 |
解决方案 | 这可能是由于在未调用 CoInitialize 的情况下实例化 Windows Touch 组件对象模型 (COM) 对象造成的。 在将项目从使用手势转换为使用操作或惯性接口时,有时会发生这种情况。 |
类别 | 说明 |
---|---|
问题 | 我的对象在平移时旋转不正确。 单指旋转无法正常工作。 |
原因 | 在物体上不正确地设置枢轴。 |
解决方案 | 您未正确设置操作透视点。 将 PivotPointX 和 PivotPointY 属性设置为要围绕旋转的对象或点的中心,并将 PivotRadius 属性设置为对象的半径。 |
Windows Touch 输入疑难解答
类别 | 说明 |
---|---|
问题 | 处理 WM_TOUCH 消息后,我就不再受到边界反馈了。 |
原因 | 使用 WM_TOUCH 消息而不处理它。 |
解决方案 | 您可能在使用 Windows Touch 消息而没有将其转发到 DefWindowProc,这将导致意外行为。 有关如何正确处理 WM_TOUCH 消息的详细信息,请查看 Windows 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,这将导致意外行为。 有关如何正确处理 WM_GESTURE 消息的详细信息,请查看 Windows 手势入门。 |
类别 | 说明 |
---|---|
问题 | 我看不到 WM_GESTURE 消息,但我知道 Windows Touch 正在运行,因为我看到了 WM_TOUCH 消息。 |
原因 | 调用 RegisterTouchWindow。 |
解决方案 | WM_TOUCH 和 WM_GESTURE 消息互斥。 如果调用了 RegisterTouchWindow,则不会收到 WM_GESTURE 消息。 |
问题 | 我看不到我期望看到的所有手势。 例如,我看到标识符为 GID_PAN 的手势,但没有看到标识符为 GID_ROTATE 的手势。 | ||
原因 | 默认情况下,某些手势(如旋转手势)未启用。 | ||
解决方案 | 收到 WM_GESTURENOTIFY 消息时,需要调用 SetGestureConfig,如 WM_GESTURENOTIFY 引用中所述,或者需要为 WM_GESTURENOTIFY 消息添加处理程序。 以下代码演示如何实现处理程序以支持旋转。
有关典型手势配置的更多示例,请参阅 SetGestureConfig。 |
类别 | 说明 |
---|---|
问题 | 执行平移手势时,应用程序中的自定义滚动条不会滚动。 |
原因 | 缺少正确的 WM_*SCROLL 消息的处理程序。 |
解决方案 | 未处理自定义滚动条中的所有 WM_*SCROLL 消息。 建议处理 WM_GESTURE 消息,而不是通过旧版支持保留自定义滚动条功能。 您需要按照使用滚动条对平移的旧版支持部分的详细介绍支持消息。 |
类别 | 说明 |
---|---|
问题 | 我的手势操作出现延迟。 |
原因 | 轻触可能会导致手势延迟。 |
解决方案 | 轻触可能会导致应用程序接收 WM_GESTURE 消息所需的时间出现延迟。 有关禁用轻触的信息,请参阅对使用滚动条平移的旧版支持。 |
相关主题