TouchPanelSetCalibration不更新校准

时间:2014-03-18 14:25:44

标签: c++ embedded touch windows-ce

问题

我们的产品提供了一个校准触摸屏的向导。一个特殊要求是我需要验证此向导所做的每个新校准。验证很简单。在校准触摸屏之后,示出了包含4个触摸目标(按钮)的新屏幕,如果用户能够在给定时间范围内击中每个目标,则认为校准成功。如果时间用完,则应恢复注册表中的校准数据,并且无需重新启动即可恢复触摸驱动程序。

方法

  1. 备份HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH\CalibrationData
  2. 使用以下内容显示Windows CE内置校准UI:TouchCalibrate()
  3. 如上所述显示自定义验证屏幕。
  4. 如果验证失败,请使用旧的校准数据恢复注册表并调用TouchPanelSetCalibration(...)
  5. 调用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调用? ...感谢任何帮助

    感谢。

    〜桑布卡

1 个答案:

答案 0 :(得分:0)

我也在MSDN forums上发布了这个问题。这是我到达那里的答案:

  

必须调用触控驱动程序入口点TouchPanelSetCalibration   通过GWES更新校准数据。从用户调用时   应用程序,API只会更新里面的数据   申请程序。

     

但是还有另一种方法可以实现触摸校准   向导。

     

TouchCalibrate()显示的触摸校准UI(calibrui)可以是   定制。基本上,您需要更换默认确认   屏幕与您自己的实现。

     

可以找到有关如何克隆默认CalibrUi的说明: