首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > WinCE >

WINCE 触摸屏参数保存,该怎么解决

2012-03-17 
WINCE 触摸屏参数保存由于我的系统上不支持HIVE注册表,所以每次触摸屏校正后参数无法保存,每次开机必须重

WINCE 触摸屏参数保存
由于我的系统上不支持HIVE注册表,所以每次触摸屏校正后参数无法保存,每次开机必须重新校正,参考网上的资料,我做了如下设想:
1写一个自己的触摸屏校正程序(在程序中还是调用系统的触摸屏校正程序,但把校正参数记录到文件中)。
2每次开机都自动运行一个校正参数加载程序,将参数写入注册表

OK
上面的两个程序写完的,基本达到我的设想,但是发现光写注册表,参数并不能起效。

继续找资料,查代码,我发现WINCE可以通过调用TouchPanelSetCalibration函数来将将参数传递给系统。
我对上面的第2步做了新的改进:
a 将之前的保存的参数从文件中读出
b 按TouchPanelSetCalibration函数的参数列表构建参数,函数原型如下:
VOID TouchPanelSetCalibration(
  INT32 cCalibrationPoints,
  INT32* pScreenXBuffer,
  INT32* pScreenYBuffer,
  INT32* pUncalXBuffer,
  INT32* pUncalYBuffer 
);
  cCalibrationPoints 采样点数量(我的采样点是5个)
  pScreenXBuffer 5次采样对应的屏幕横坐标
  pScreenYBuffer 5次采样对应的屏幕纵坐标
  pUncalXBuffer 5次采样对应的采样数据横坐标
  pUncalYBuffer 5次采样对应的采样数据纵坐标
  其中pUncalXBuffer和pUncalYBuffer的数据就是我之前保存在文件里的参数。
  pScreenXBuffer和pScreenYBuffer通过屏幕截屏软件也可以得到。
c 调用TouchPanelSetCalibration,使之生效。

但在编写程序时发现问题,按MSDN的资料TouchPanelSetCalibration函数的头文件是:tchddi.h Library:Tchmain.lib,我将这两个文件都拷贝到项目目录中,并在Link选项中引用Tchmain.lib,但编译还是报错,为什么???

我又试着换一种方法,我发现TouchPanelSetCalibration函数在Touch.dll中,我试着
typedef BOOL (WINAPI *_TouchPanelSetCalibration)(int, int*, int*, int*, int*);
_TouchPanelSetCalibration TouchPanelSetCalibration = NULL;

HINSTANCE hinstance = LoadLibrary(_T("Touch.dll")); 
  TouchPanelSetCalibration = (_TouchPanelSetCalibration)GetProcAddress(hinstance , L"TouchPanelSetCalibration");

但调试发现LoadLibrary(_T("Touch.dll")); 加载失败,我无语。

在此请各位帮我看看,第一我的思路是否可行。
第二在应用程序中应该怎么调用TouchPanelSetCalibration函数。

谢谢
 


[解决办法]
开机时修改HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\touch下 的CalibrationData的值为校准后的值,可以起作用吗?
那你的思路可能重启后又恢复原值了

热点排行