Что происходит, когда стилус "поднимается" на планшетном ПК?
Я работаю над устаревшим проектом в VC++/Win32/MFC
, В последнее время стало требоваться, чтобы приложение работало на планшетном ПК, и это породило множество новых проблем. Я был в состоянии работать с этими вопросами и обходить их, но остался один, в котором я мог бы использовать некоторые экспертные предложения.
У меня есть конкретная ошибка, которая вызвана "снятием" стилуса с активной поверхности. В основном курсор мыши исчезает, а затем снова появляется, когда вы "нажимаете" его обратно на экран.
Имеет смысл, что это не учитывается в приложении. Вы не можете поднять курсор на настольном компьютере. Так что я ищу хороший обзор того, что происходит (с точки зрения сообщений Windows и т. Д.), Когда происходит лифт. Это переводит, чтобы просто изменить фокус и события наведения мыши? Кажется, моя ошибка также связана с изменениями курсора (хотя может и не быть связана с лифтом). Конечно, неожиданный "подъем" нарушает состояние обработки инструмента приложения.
Итак, осязаемые вопросы:
- Что происходит, когда появляется стилус "лифт"? Пресс?
- Какие вызовы API можно использовать для обнаружения этого? Это просто переводит в стандартные сообщения с установленными флагами / значениями?
- Какой хороший способ проверить / эмулировать это, когда ваш компьютер для разработки - это настольный компьютер? Я просто ослеп? (У меня есть только периодический доступ к планшетному ПК)
- Что представляет собой правильное поведение или лучшие практики для осознания планшетного стилуса?
Спасибо за ваше внимание, э-э
4 ответа
Как пользователь планшета я могу ответить на несколько ваших вопросов.
Первый:
Вы не можете очень легко удерживать "фокус клавиатуры" на окне, когда стилус должен выйти из сфокусированного окна, чтобы нажать клавишу на виртуальной клавиатуре.
Большинство виртуальных клавиатур, которые я использовал (панель ввода планшета Windows и одна под Ubuntu), позволяют программе, в которую они вводят, сохранять "фокус клавиатуры".
Что происходит, когда появляется стилус "лифт"? Пресс?
Под Windows значение давления падает, но вне этого события не происходит. (Я не знаю о Linux.)
Какие вызовы API можно использовать для обнаружения этого? Это просто переводит в стандартные сообщения с установленными флагами / значениями?
Как упоминалось выше, если вы можете получить значение давления, вы можете использовать его.
Какой хороший способ проверить / эмулировать это, когда ваш компьютер для разработки - это настольный компьютер? Я просто ослеп? (У меня есть только периодический доступ к планшетному ПК)
Когда стилус находится в другом месте, глобальные координаты указателя изменяются, поэтому вы можете эмулировать внезапное перемещение указателя с помощью всего, что позволяет изменять значения глобального указателя. (Класс Robot в Java делает это довольно просто.)
Что представляет собой правильное поведение или лучшие практики для осознания планшетного стилуса?
Я бы порекомендовал вам прочитать то, что говорит Microsoft, на сайте MSDN есть множество отличных статей. ( http://msdn.microsoft.com/en-us/library/ms704849(VS.85).aspx) Я укажу, что размер кнопок в ваших приложениях имеет ОГРОМНОЕ различие.
Надеюсь, это помогло.
Под Windows значение давления падает, но вне этого события не происходит. (Я не знаю о Linux.)
Под Linux вы получите "ProximityEvents"
Скорее всего, эти события WT_PROXIMITY доступны в Windows (см. http://www.wacomeng.com/devsupport/ibmpc/wacomwindevfaq.html).
Насколько я понимаю, событие "лифт" отсутствует - единственное событие происходит, когда стилус возвращается на экран позже. Конечно, это зависит от вашего конкретного драйвера и так далее.
Хуже того, описанная вами ошибка может быть воспроизведена с помощью обычной мыши. Попробуйте двигать мышь так быстро, как только сможете - она почти наверняка прыгнет на несколько пикселей одновременно. Или даже десятки или сотни, если у вас есть настройки мыши, настроенные для максимальной скорости указателя. Одно обновление, мышь может быть на 100,100. В следующем обновлении это может быть 200 300.
@Greg - пояснение: это портативный компьютер со встроенным планшетом и встроенным стилусом. Устройство не имеет специальной клавиатуры (виртуальная на сенсорном экране) и не является устройством ввода wacom. Извините за путаницу.
Похоже, что есть пакет SDK для Microsoft Windows XP Tablet PC Edition, который может иметь возможность получать специальные детали, такие как давление. Однако я знаю, что должен быть какой-то уровень стандартной совместимости с существующими приложениями, не поддерживающими планшеты. Я думаю, я могу попытаться установить Spy++ на планшет и попробовать отфильтровать до определенных сообщений / событий.