Что происходит, когда стилус «поднимается» на планшетном ПК? - PullRequest
0 голосов
/ 17 сентября 2008

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

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

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

Итак, осязаемые вопросы:

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

Спасибо за ваше внимание, й

Ответы [ 4 ]

1 голос
/ 17 сентября 2008

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

Во-первых:

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

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

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

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

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

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

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

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

Что представляет собой правильное поведение или лучшие практики для осознания стилуса планшета?

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

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

0 голосов
/ 17 сентября 2008

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

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

0 голосов
/ 17 сентября 2008

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

Под Linux вы получите "ProximityEvents"

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

0 голосов
/ 17 сентября 2008

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

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

...