Что происходит, когда стилус «поднимается» на планшетном ПК?

StackOverflow https://stackoverflow.com/questions/80518

Вопрос

Я работаю над устаревшим проектом в VC++/Win32/MFC.Недавно стало требованием, чтобы приложение работало на планшетный ПК, и это привело к появлению множества новых проблем.Я смог работать над этими проблемами и вокруг них, но остался один, в котором я мог бы использовать некоторые экспертные предложения.

У меня есть конкретная ошибка, связанная с «подъёмом» стилуса над активной поверхностью.Обычно курсор мыши исчезает, а затем появляется снова, когда вы «нажимаете» его обратно на экран.

Логично, что в приложении это не учтено.ты не можешь поднимать курсор на настольном компьютере.Итак, мне нужен хороший обзор того, что происходит (с точки зрения сообщений Windows и т. д.), когда происходит подъем.Означает ли это просто изменение фокуса и события при наведении курсора мыши?Моя ошибка, похоже, также связана с изменением курсора (хотя это может быть не связано с подъемом).Конечно, неожиданный «лифт» нарушает состояние обработки инструментов приложения.

Итак, актуальные вопросы:

  1. Что происходит, когда происходит «подъем» стилуса?Пресс?
  2. Какие вызовы API можно использовать для обнаружения этого?Это просто переводится в стандартные сообщения с установленными флагами/значениями?
  3. Каков хороший способ протестировать/эмулировать это, если ваш компьютер для разработки является настольным?Я просто летаю вслепую?(У меня есть только периодический доступ к планшетному ПК)
  4. Что представляет собой правильное поведение или рекомендации по повышению осведомленности о стилусе планшета?

Спасибо за рассмотрение, EE

Это было полезно?

Решение

Как пользователь планшета, я могу ответить на несколько ваших вопросов.

Первый:

Вы не можете легко удерживать «фокус клавиатуры» на окне, когда стилусу приходится выходить из сфокусированного окна, чтобы нажать клавишу на виртуальной клавиатуре.

Большинство виртуальных клавиатур, которые я использовал (панель ввода планшета Windows и одна под Ubuntu), позволяют программе, которую они набирают, сохранять «фокус клавиатуры».

Что происходит, когда происходит «подъем» стилуса?Пресс?

Под Windows значение давления падает, но за его пределами никаких событий нет.(Я не знаю насчет Linux.)

Какие вызовы API можно использовать для обнаружения этого?Это просто переводится в стандартные сообщения с установленными флагами/значениями?

Как упоминалось выше, если вы можете получить значение давления, вы можете его использовать.

Каков хороший способ протестировать/эмулировать это, если ваш компьютер для разработки является настольным?Я просто летаю вслепую?(У меня есть только периодический доступ к планшетному ПК)

Когда стилус помещается в другое место, глобальные координаты указателя изменяются, поэтому вы можете имитировать внезапное перемещение указателя с помощью всего, что позволяет вам изменять глобальные значения указателя.(Класс Robot в Java делает это довольно легко.)

Что представляет собой правильное поведение или рекомендации по повышению осведомленности о стилусе планшета?

Я бы порекомендовал вам прочитать то, что говорит Microsoft: на веб-сайте MSDN есть ряд отличных статей.(http://msdn.microsoft.com/en-us/library/ms704849(VS.85).aspx) Я укажу, что размер кнопок в ваших приложениях имеет огромное значение.

Надеюсь, это помогло.

Другие советы

Насколько я понимаю, события «подъёма» не происходит — единственное событие происходит, когда стилус позже возвращается на экран.Конечно, это зависит от вашего конкретного драйвера и так далее.

Хуже того, описанную вами ошибку можно воспроизвести с помощью обычной мыши.Попробуйте двигать мышь как можно быстрее — она почти наверняка прыгнет сразу на несколько пикселей.Или даже десятки или сотни, если в настройках мыши настроена максимальная скорость указателя.Одно обновление, мышь может быть на уровне 100 100.В следующем обновлении он может быть на уровне 200 300.

Под Windows значение давления падает, но за его пределами никаких событий нет.(Я не знаю насчет Linux.)

В Linux вы получите «ProximityEvents».

Скорее всего, эти события WT_PROXIMITY доступны в Windows (см.: http://www.wacomeng.com/devsupport/ibmpc/wacomwindevfaq.html )

@Greg - Уточнение: это ноутбук со встроенным планшетом и встроенным стилусом.устройство не имеет специальной клавиатуры (это виртуальная клавиатура на сенсорном экране) и не является устройством ввода wacom.Извините за путаницу.

Похоже, что существует SDK для Microsoft Windows XP Tablet PC Edition, которая может иметь возможность получать специальные сведения, такие как давление.Однако я знаю, что должен быть некоторый уровень стандартной совместимости с существующими приложениями, не поддерживающими планшеты.Думаю, я могу попытаться установить Spy++ на планшет и попытаться отфильтровать определенные сообщения/события.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top