=============================================================
标题:wince识别触摸笔的右键点击
摘要:
备注:Windows CE
日期:2010.5.6
姓名:朱铭雷
=============================================================
在wince设备中,使用触摸笔不同于鼠标,它没有右键。要通过长按(按下并保持一段时间)来模拟右键点击的动作。那么在应用程序中如果要判断用户右键点击的动作,可以通过SHRecognizeGesture函数来完成。思路也比较简单,当触摸笔点击屏幕时,将会投递一个WM_LBUTTONDOWN消息,在这个消息响应函数中调用SHRecognizeGesture来判断即可。
SHRecognizeGesture函数的原型如下:
WINSHELLAPI DWORD SHRecognizeGesture(
SHRGINFO * shrg
);
唯一的参数shrg指向SHRGINFO结构体,该结构体如下:
typedef struct tagSHRGI {
DWORD cbSize;
HWND hwndClient;
POINT ptDown;
DWORD dwFlags;
} SHRGINFO, *PSHRGINFO;
cbSize是SHRGINFO结构体的大小。hwndClient是窗口句柄。ptDown是触摸点的坐标。dwFlags是标志位,具体内容查看帮助文档。
下面是一段简单的示例代码:
//WM_LBUTTONDOWN消息响应函数
LRESULT DoLButtonDownMain (HWND hWnd, UINT wMsg, WPARAM wParam,
LPARAM lParam) {
POINT pt;
int rc;
pt.x = LOWORD (lParam);
pt.y = HIWORD (lParam);
SHRGINFO sri;
sri.cbSize = sizeof (sri);
sri.dwFlags = 1;
sri.hwndClient = hWnd;
sri.ptDown = pt;
rc = SHRecognizeGesture (&sri);
if (rc == GN_CONTEXTMENU)
{
ShowContextMenu (hWnd, pt); //显示一个右键菜单
}
return 0;
}