проблема
Наш продукт предоставляет мастер для калибровки сенсорного экрана. Особое требование заключается в том, что мне нужно проверять каждую новую калибровку, выполняемую этим мастером. Проверка довольно проста, хотя. После калибровки сенсорного экрана отображается новый экран, содержащий 4 сенсорных цели (кнопки), если пользователь может поразить каждую цель в течение заданного периода времени, калибровка считается успешной. Если время истекает, данные калибровки в реестре должны быть восстановлены, и сенсорный драйвер должен быть восстановлен без перезапуска.
Подход
HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH\CalibrationData
TouchCalibrate()
TouchPanelSetCalibration(...)
используя старые данные калибровки.При звонке TouchPanelSetCalibration(...)
Я получаю следующий вывод:
Maximum Allowed Error 54: Calibration Results: Screen => Mapped ( 240, 136) => ( 240, 130) ( 96, 54) => ( 93, 57) ( 96, 218) => ( 99, 218) ( 384, 218) => ( 381, 220) ( 384, 54) => ( 387, 55) Maximum error (square of Euclidean distance in screen units) = 36
Реестр должным образом восстановлен и, учитывая вывод, я предполагаю, что данные калибровки также правильно передаются драйверу.
Но как-то сенсорная калибровка не восстанавливается без перезагрузки системы.
Нужно ли как-то сигнализировать об этом изменении, отправив сообщение или запустив событие? Нужно ли делать какие-либо дополнительные вызовы API?
… Любая помощь приветствуется
Благодарю.
~ Sambuca
Я также разместил этот вопрос на Форумы MSDN. Вот ответ, который я получил там:
Точка входа драйвера Touch
TouchPanelSetCalibration
должен быть назван
GWES для обновления данных калибровки. Когда вызывается от пользователя
приложение, API будет обновлять только данные, хранящиеся в
прикладной процесс.Но есть другой подход для реализации вашей калибровки касания
Мастер.Touch Calibration UI (calibrui), показанный
TouchCalibrate()
может быть
настроены. По сути, вам нужно заменить подтверждение по умолчанию
экран с вашей собственной реализацией.Инструкции о том, как клонировать CalibrUi по умолчанию можно найти:
- Для Windows CE 5.0 в MSDN: http://msdn.microsoft.com/en-us/library/aa452834.aspx
- Для CE 6.0 и Compact 7: http://guruce.com/blogpost/cloning-calibrui-in-windows-ce-60
Других решений пока нет …