wince的cordll提供了屏幕校准的函数,使用方法与钩子函数类似,强制加载dll,获取地址,然后用函数指针调用。
typedef BOOL (WINAPI *_TouchCalibrate)();
HINSTANCE hinstance = LoadLibrary(_T("coredll.dll"));
if (hinstance == NULL)
{
AfxMessageBox (L"instance == NULL");
return;
}
_TouchCalibrate TouchCalibrate = NULL;
TouchCalibrate = (_TouchCalibrate)GetProcAddress(hinstance , L"TouchCalibrate");
if (TouchCalibrate == NULL)
{
AfxMessageBox (L"TouchCalibrate == NULL");
return;
}
//然后使用如下代码,就会出现屏幕校准画面了。
TouchCalibrate ();
FreeLibrary(hinstance );
注册表的HKEY_LOCAL_MACHINE/HARDWARE/DEVICEMAP/TOUCH的CalibrationData项保存有屏幕校准数据,所以如果注册表是基于RAM的话,那么屏幕校准的结果将得不到保存,系统断电重启后需要再次校准(如果用户觉得有必要的话)。