TouchPanelSetCalibration未更新校准
TouchPanelSetCalibration not updating calibration
本文关键字:更新 TouchPanelSetCalibration 更新时间:2023-10-16
问题
我们的产品提供了一个校准触摸屏的向导。一个特殊的要求是,我需要验证这个向导进行的每一次新校准。验证非常简单。在校准了触摸屏之后,显示了包含4个触摸目标(按钮(的新屏幕,如果用户能够在给定的时间范围内击中每个目标,则认为校准成功。如果时间耗尽,注册表中的校准数据应恢复,触摸驱动器应在不重新启动的情况下恢复。
方法
HKEY_LOCAL_MACHINEHARDWAREDEVICEMAPTOUCHCalibrationData
的备份- 使用
TouchCalibrate()
显示Windows CE内置校准UI - 如上所述显示自定义验证屏幕
- 如果验证失败,则恢复注册表并使用旧的校准数据调用
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论坛上发布了这个问题。我得到的答案是:
必须调用触摸驱动程序入口点
TouchPanelSetCalibration
由GWES更新校准数据。从用户调用时应用程序,API将只更新申请流程。但还有其他方法可以实现触摸校准男巫
TouchCalibrate()
显示的触摸校准界面(calibrui(可以定制。基本上,您需要替换默认确认屏幕上显示您自己的实现。有关如何克隆默认CalibUi的说明可以找到:
- 对于MSDN中的Windows CE 5.0:http://msdn.microsoft.com/en-us/library/aa452834.aspx
- 对于CE 6.0和Compact 7:http://guruce.com/blogpost/cloning-calibrui-in-windows-ce-60
相关文章:
- 从C++本机插件更新Vector3数组
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- cmake更新缓存的变量
- 更新到莫哈韦后出现cmath错误
- OpenMP:并行更新数组总是需要减少数组吗
- 为什么我的变量没有更新,我的 LED 没有亮起?
- 指针没有更新它在void函数内部指向的值
- 如何在c++中获取要更新的值
- 已修改的LinkedList未在文本文件本身中更新
- Qt:当QListView获得新条目时,如何更新QStringList
- 更新的矢量元素不打印
- 如何使用按钮更新GTK3图像以使用C++从相机捕获图片
- 如何在ECS框架中更新组件数据和通知系统
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- 如果我想在没有更新编译器的情况下使用新功能,该怎么办?
- 如何在 C++11 中查找和更新向量中的一个嵌套结构
- (SFML)按下键时,播放器构造函数未使用正确的动画进行更新
- 在 emscripten 网页汇编正在运行期间更新进度条?
- 在运行时使用范围更新结果
- 用非原子更新原子变量,反之亦然