PB自带的触摸屏校准代码D:\WINCE420\PUBLIC\COMMON\OAK\DRIVERS\TOUCH !18M!8Xea 可以参考PLATFORM BUILDER的帮助文档: Windows CE Features > Shell and User Interface > User Interface > Touch Screen (Stylus) ------CE5.0 z 9k3@\7 Platform Development > Developing Platform Elements > Customizing the User Interface > Touch Screen Calibration Reference -------CE4.2 Touch Panel校准过程如下: 1)调用TouchPanelEnable启动触摸屏 2)调用TouchPanelGetDeviceCaps,通过设置参数TPDC_CALIBRATION_POINT_COUNT_ID来获得校准用触点的个数 3)取校准点,对每个校准点都有以下过程 A:调用TouchPanelGetDeviceCaps,设置参数TPDC_CALIBRATION_POINT_ID来获得校准点坐标 B:在上述校准点坐标处画十字,并等待用户点击 C:调用TochPanelReadCalibrationPoint来获得上述校准点坐标处触摸屏对应的数据 4)当取完校准用的所有的点,调用TouchPanelSetCalibration来计算校准系数,该函数实现没有找到 程序流程: TouchPanelGetDeviceCaps--> DdsiTouchPanelGetDeviceCaps(参数为TPDC_CALIBRATION_POINT_ID)--> TouchDriverCalibrationPointGet(得到校准点之一的坐标,该坐标为screen坐标) 英文资料如下: The following steps detail the basic algorithm that you, the driver developer, can use to sample and calibrate the screen with the touch screen driver:
Wince的cordll提供了屏幕校准的函数,使用方法强制加载dll,获取地址,然后用函数指针调用。这里给出源代码。
首先在头文件里加入函数指针定义: typedef BOOL (WINAPI *_TouchCalibrate)(); 然后使用如下代码,就会出现屏幕校准画面了。
关于屏幕校准,有一点值得说的是,据我所知,注册表的 HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\TOUCH的CalibrationData项保存有屏幕校准数据,所以 如果注册表是基于RAM的话,那么屏幕校准的结果将得不到保存,系统断电重启后需要再次校准(如果用户觉得有必要的话)。如果谁有不用hive注册表就能 保存上次的屏幕校准结果,请不吝赐教。
(ch_ff) |