WinCE识别触摸笔的右键点击
来源:互联网 发布:网络机顶盒免费软件app 编辑:程序博客网 时间:2024/05/17 21:38
WinCE系统中,触摸笔长按事件相当于是鼠标右键弹出上下文菜单,在网上大约能找到两段相似的代码,一是用timer事件实现,另一个是捕获WM_LBUTTON_DOWN消息,再调用SHRecognizeGesture实现,大致代码如下:
在桌面上按住左键不放 弹出右键菜单。case WM_LBUTTONDOWN:
{
SHRGINFO shrg;
HMENU hmenu;
shrg.cbSize = sizeof(shrg);
shrg.hwndClient = hWnd;
shrg.ptDown.x = LOWORD(lParam);
shrg.ptDown.y = HIWORD(lParam);
shrg.dwFlags = SHRG_RETURNCMD | SHRG_NOANIMATION;
if (SHRecognizeGesture(&shrg) == GN_CONTEXTMENU) {
hmenu = GetSubMenu(g_hMainMenu, 0);
TrackPopupMenuEx(hmenu,
TPM_LEFTALIGN,
LOWORD(lParam),
HIWORD(lParam),
hWnd,
NULL);
}
break;
}
说明:
OS Versions: Windows CE .NET 4.2 and later.
Header: Aygshell.h.
Link Library: Aygshell.lib.
经过试验,两种方式都工作的不好,以上这种方式偶尔能弹出一下,多数时候并不能正常工作。经验长按并截获消息发现,长按时会发送一个WM_CONTEXTMENU消息,这就是长按后发送的消息。所以,处理方法如下:例如要在CListCtrl列表上选中一行,并长按触摸笔并弹出上下文菜单,重载窗口的PreTranslateMessage函数,将收到的上下文菜单发到自定消息处理函数处理。
//定议消息
#define ID_MSG_CONTEXT_MENU WM_USER + 101
//消息处理函数
LRESULT MyDialog::OnCListCtrlContextMenu(WPARAM wParam, LPARAM lParam)
//消息映射
BEGIN_MESSAGE_MAP(MyDialog, CDialog)
ON_MESSAGE(ID_MSG_CONTEXT_MENU, OnCListCtrlContextMenu)
END_MESSAGE_MAP()
重载PreTranslateMessage函数
BOOL MyDialog::PreTranslateMessage(MSG* pMsg)
{
//处理鼠标长按
if(pMsg->message == WM_CONTEXTMENU)
{
CWnd* pCur = WindowFromPoint(pMsg->pt);
if (pCur == &m_listView)
{
PostMessage(ID_MSG_CONTEXT_MENU,NULL,NULL);
}
}
return CDialog::PreTranslateMessage(pMsg);
}
//弹出上下文菜单
LRESULT MyDialog::OnCListCtrlContextMenu(WPARAM wParam, LPARAM lParam)
{
POSITION pos = m_listView.GetFirstSelectedItemPosition();
if (pos != NULL)
{
int item = m_ listView.GetNextSelectedItem(pos);
POINT point;
GetCursorPos(&point);
//自定义上下文化菜单
CMenuActive Menu(point, this);
Menu.InitMenu(MENU_ADD|MENU_EDIT|MENU_DELETE);
}
return 0;
}
这样就能完美的实现长按时弹出上下文菜单。
- wince识别触摸笔的右键点击
- WinCE识别触摸笔的右键点击
- Win10 Synaptics触摸板无法实现双指单击模拟鼠标右键点击的解决办法
- wince下的触摸校准
- 利用R文件根据按钮id来识别点击某一个按钮时的触摸响应
- (10) iphone 开发 用户点击,触摸和手势识别 解析
- iphone 开发 用户点击,触摸和手势识别 解析
- WinCE触摸校准界面的方法
- iOS的触摸与手势识别
- android 触摸事件、点击事件的区别
- android 触摸事件、点击事件的区别
- android 触摸事件、点击事件的区别
- android 触摸事件、点击事件的区别
- android 触摸事件、点击事件的区别
- android 触摸事件、点击事件的区别
- Android 触摸事件、点击事件的区别
- android 触摸事件、点击事件的区别
- android 触摸事件、点击事件的区别
- [水题][hdoj_1092]A+B for Input-Output Practice (IV)
- 1万流量倒计时3,2,1
- 优先队列的实现--二叉堆
- Dell N4050 ubuntu系统禁用触摸板
- 精度计算:(二) 大数乘小数
- WinCE识别触摸笔的右键点击
- C语言函数调用的规则
- zz 开源点评:SQLite数据库扫盲
- Android自定义button的实现,未选中,按下,选中效果
- Android自定义控件及按下效果
- 为SeekBar滑块设置固定值以及自定义Seekbar,progressbar样式
- 最小化安装fvwm
- 可变参数的函数
- [水题][hdoj_1093]A+B for Input-Output Practice (V)