有关触摸屏校准

时间:2021-02-12 11:44:23

有关触摸屏校准

CSDN相关帖:触摸屏校准程序!

原帖地址:

http://topic.csdn.net/u/20080515/23/2D4F7280-449D-4EBE-93DD-B65E9320BD75.html

billy14:

调用系统自带的校准程序,方法如下:

1 首先在头文件里加入函数指针定义:

  typedef  BOOL  (WINAPI *_TouchCalibrate)();

2 然后使用如下代码,就会出现屏幕校准画面了。

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 );

但是有个现象就是,校准完之后在屏幕上会提示“请按ESC取消保存,按ENTER保存校准数据”之类的话,其实点击一下触摸屏就可以保存了,问题出来了,我用的是触摸笔根本就没有键盘,想把这段话改成“请点击触摸屏就可以返回程序”之类的话,这个要怎么改呢?还有要是改不了,要自己些一个触摸屏校准程序,该如何入手呢?请高手指点!谢谢!

yashi:

修改WINCE500\PUBLIC\COMMON\OAK\DRIVERS\CALIBRUI下的calbriui.rc文件

修改问以后记得重新build public文件和内核

billy14:

这个我以前试过的,在PB5.0里只要点"build and Sysgen",系统就编译不过去,而且接下来重新build一个新的系统都提示错误,后来只有重新安装PB了,所以后来我就没动过"Build and Sysgen"那个功能了,呵呵.现在还不知道是为什么就会出错呢?

你们的可以吗?

yashi:

当然可以。

而且也没必要用build and sysgen ,你可以用命令行单独编译修改的calibrui,然后再sysgen就可以了。

billy14:

用命令行单独编译修改的calibrui?这个不会啊!

是不是在命令行下找到该目录然后输入build -cfs就可以了啊,还是有别的命令!

slyzhang:

也没必要用build and sysgen ,你可以用命令行单独编译修改的calibrui,然后再sysgen就可以了。

在命令行下找到该目录然后输入build -cfs就可以

然后再Sysgen

billy14:

嗯,按照楼上俩位的方法,问题已经解决!

现在又有一个新的问题了,我想通过发ESC键来取消触摸屏的保存,但是一直不行,不知道是什么原因,代码如下:

在一个线程里,

HWND hwnd;

hwnd = ::GetForegroundWindow();

RETAILMSG(1,(_T("send esc to the dialog hwnd = 0x%x\r\n"),hwnd));

::PostMessage(hwnd,WM_KEYDOWN,VK_ESCAPE,NULL);

Sleep(100);

::PostMessage(hwnd,WM_KEYUP,VK_ESCAPE,NULL);

我用SPY跟踪过得到的句柄应该就是校准程序的,但不知道为什么就是不退出校准的界面,还用::PostMessage(hwnd,WM_DESTROY,0,NULL);试过也不行.大家帮忙分析一下是什么原因,再次麻烦了!

附:另外两个比较好的帖子

帖1:http://topic.csdn.net/u/20091221/14/062035C3-F707-4A91-B3AE-3EF526D723E7.html

帖2:http://topic.csdn.net/u/20080627/15/073CB3E3-AAFC-4EB2-8F3B-DC8AF138E3B4.html

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/joyzml/archive/2010/03/13/5376253.aspx