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