触摸屏校准程序!

时间:2022-09-24 11:43:55
现在是直接调用系统自带的校准程序,方法如下:
首先在头文件里加入函数指针定义: 
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 );
但是有个现象就是,校准完之后在屏幕上会提示“请按ESC取消保存,按ENTER保存校准数据”之类的话,其实点击一下触摸屏就可以保存了,问题出来了,我用的是触摸笔根本就没有键盘,想把这段话改成“请点击触摸屏就可以返回程序”之类的话,这个要怎么改呢?还有要是改不了,要自己些一个触摸屏校准程序,该如何入手呢?请高手指点!谢谢!

9 个解决方案

#1


关注!

用MS提供的程序,改可能比较难。
实在不行,只能让驱动提供支持,自己写一个校准程序。

#2


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

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

#3


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

#4


当然可以。

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

#5


用命令行单独编译修改的calibrui?这个不会啊!
是不是在命令行下找到该目录然后输入build -cfs就可以了啊,还是有别的命令!

#6


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

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

然后再Sysgen    

#7


恩,周一再试试!!

#8


嗯,按照楼上俩位的方法,问题已经解决!
现在又有一个新的问题了,我想通过发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);试过也不行.大家帮忙分析一下是什么原因,再次麻烦了!

#9


结贴!

#1


关注!

用MS提供的程序,改可能比较难。
实在不行,只能让驱动提供支持,自己写一个校准程序。

#2


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

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

#3


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

#4


当然可以。

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

#5


用命令行单独编译修改的calibrui?这个不会啊!
是不是在命令行下找到该目录然后输入build -cfs就可以了啊,还是有别的命令!

#6


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

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

然后再Sysgen    

#7


恩,周一再试试!!

#8


嗯,按照楼上俩位的方法,问题已经解决!
现在又有一个新的问题了,我想通过发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);试过也不行.大家帮忙分析一下是什么原因,再次麻烦了!

#9


结贴!