Устранение неполадок приложений
В этом разделе приводятся решения распространенных проблем.
Общие действия по устранению неполадок
Категория | Description |
---|---|
Проблема | Я выполняю функции Windows Server 2008 и Windows Touch не работают. |
Причина | Вы не включили возможности рабочего стола. |
Решение | Откройте средство администрирования диспетчер сервера: нажмите кнопку "Пуск", выберите пункт "Администрирование" и щелкните диспетчер сервера. Щелкните элемент "Компоненты" в левом столбце. Нажмите кнопку "Добавить компоненты" в разделе "Компоненты". Выберите "Рабочий стол", нажмите кнопку "Далее" и нажмите кнопку "Установить". |
Категория | Description |
---|---|
Проблема | Всякий раз, когда я быстро перемещаю палец по моему приложению, появляется стрелка, и мой жест или манипуляция не регистрируются правильно. |
Причина | Включение мерцаний, если вам это не нужно. |
Решение | Вы включили мелькание, когда вы хотите, чтобы она была отключена. Дополнительные сведения об отключении пера см . в статье "Поддержка сдвига устаревших версий с помощью полос прокрутки". |
Проблема | Я не могу различить входные данные мыши и входные данные Windows Touch. | ||
Причина | Windows создает сообщения мыши для поддержки прежних версий, когда пользователь щелкает экран. | ||
Решение | Чтобы определить источник, можно вызвать GetMessageExtraInfo для WM_LBUTTONDOWN и WM_LBUTTONUP сообщений. В следующем коде показано, как это можно сделать.
|
Категория | Description |
---|---|
Проблема | Разделы справки запускать приложения Microsoft PixelSense в Windows 7? |
Причина | Windows Touch и Microsoft PixelSense несовместимы. |
Решение | Вам нужно выбрать платформу Windows 7 или платформу Microsoft PixelSense. |
Устранение неполадок с манипуляциями и инерцией
Категория | Description |
---|---|
Проблема | Мое приложение заморозка не по какой-либо причине. При инициализации интерфейсов объектов я получаю нарушения доступа. |
Причина | Отсутствует вызов CoInitialize при использовании интерфейсов IManipulationProcessor или IInertiaProcessor. |
Решение | Это может быть вызвано создание экземпляров объектов объектной модели компонента Windows Touch (COM) без вызова CoInitialize. Иногда это происходит при преобразовании проектов из жестов в использование манипуляций или интерфейсов инерции. |
Категория | Description |
---|---|
Проблема | Мой объект поворачивается неправильно при переводе. Поворот с одним пальцем не работает правильно. |
Причина | Неправильно задать сводки для объекта. |
Решение | Вы не настраиваете точки сводных точек манипуляции правильно. Задайте свойства PivotPointX и PivotPointY в центр объекта или точки, вокруг которой нужно повернуть, и задайте для свойства PivotRadius радиус объекта. |
Устранение неполадок с входным вводом Windows Touch
Категория | Description |
---|---|
Проблема | После того как я обработаю сообщение WM_TOUCH , я перестаю получать отзывы о границах. |
Причина | Использование сообщения WM_TOUCH без обработки сообщения. |
Решение | Возможно, вы используете сообщение Windows Touch, не перенаправляя его в DefWindowProc, что приведет к неожиданному поведению. Дополнительные сведения о том, как правильно обрабатывать WM_TOUCH сообщения, см. в руководстве по началу работы с сообщениями Windows Touch. |
Проблема | Я в том числе windows.h, но он все еще говорит, что WM_TOUCH не определен. | ||
Причина | Неправильная версия Windows в Targetver.h. | ||
Решение | Вы не установили правильную версию Windows в проекте. В следующем коде показан правильный набор версий Windows для Windows Touch в Windows 7.
|
Проблема | Мои сенсорные входные x-координаты и координаты y, кажется недопустимыми. Они являются либо большими значениями, чем я ожидаю, либо они являются отрицательными значениями. | ||
Причина | Возможно, вам потребуется преобразовать точки касания в пиксели или преобразовать координаты экрана. | ||
Решение | Убедитесь, что вы вызываете TOUCH_COORD_TO_PIXEL и ScreenToClient. В следующем примере кода показано, как это сделать:
Примечание. |
Категория | Description |
---|---|
Проблема | Я не вижу WM_TOUCH сообщений, но я знаю, что Windows Touch работает, потому что я вижу WM_GESTURE сообщения. |
Причина | Отсутствует вызов RegisterTouchWindow. |
Решение | WM_TOUCH и WM_GESTURE сообщения являются взаимоисключающими. Если вы не вызываете RegisterTouchWindow, вы получите только WM_GESTURE сообщения. |
Категория | Description |
---|---|
Проблема | Я замечаю небольшие задержки с момента, когда я касаюсь пальца вниз, когда я получаю входные данные в моем приложении. |
Причина | Отклонение пальмы вызывает задержки ввода. |
Решение | Если TWF_WANTPALM задано в вызовах RegisterTouchWindow, включено отклонение ладони. Это приводит к небольшой задержке (100 мс), пока программное обеспечение проверяет, поступает ли вход из пальца, пера или ладони пользователя. Отключите отклонение ладони, вызвав RegisterTouchWindow с флагом TWF_WANTPALM очистки. |
Устранение неполадок жестов Windows Touch
Категория | Description |
---|---|
Проблема | После обработки сообщения WM_GESTURE я перестаю получать отзывы о границах. Или жест, который работал ранее, не работает сейчас. |
Причина | Использование сообщения WM_GESTURE без обработки. |
Решение | Возможно, вы используете сообщение Windows Touch, не перенаправляя его в DefWindowProc, что приведет к неожиданному поведению. Дополнительные сведения о том, как правильно обрабатывать WM_GESTURE сообщения, см. в руководстве по началу работы с жестами Windows. |
Категория | Description |
---|---|
Проблема | Я не вижу 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. |
Категория | Description |
---|---|
Проблема | Пользовательские полосы прокрутки в моем приложении не прокручиваются при выполнении жеста сдвига. |
Причина | Отсутствующие обработчики для правильных сообщений WM_*SCROLL. |
Решение | Вы не обрабатываете все сообщения WM_*SCROLL в настраиваемых полосах прокрутки. Рекомендуется обрабатывать сообщение WM_GESTURE , а не сохранять пользовательские функции полосы прокрутки с помощью устаревшей поддержки. Вам необходимо поддерживать сообщения, как описано в разделе "Поддержка устаревших версий" для сдвига с помощью полос прокрутки. |
Категория | Description |
---|---|
Проблема | Я получаю задержки для жестов. |
Причина | Flicks может привести к задержкам жестов. |
Решение | Flicks может привести к задержкам в течение длительного времени для получения WM_GESTURE сообщений приложения. Сведения об отключении щелков см . в разделе "Устаревшая поддержка сдвига с помощью полос прокрутки". |
См. также