有关触摸屏校准
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