Moblie 鼠标长按会画圈,如何得知画圈完成呢

cd_1_1983 2009-08-14 11:16:03
就是用触摸笔在屏幕上长按后,会围绕鼠标画圈,一般画圈完成后会弹出右键菜单,我想知道如何知道画圈完成的,因为我用的控件在画圈完成后没有响应,我想在画完圈后自己响应,可不知道应该捕获哪个消息
...全文
373 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
最后一只恐龙 2009-09-09
  • 打赏
  • 举报
回复
设置右键菜单就可以了,画圈是操作系统的工作。手写笔相当于鼠标,只不过它没有左右键,那么就定义点一下为左键点击,常按为右键点击。
IMGGTOO 2009-09-08
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 cd_1_1983 的回复:]
真的有这个问题,我现在是在弹出的新窗口退出后向窗口发一个WM_LBUTTONDOWN消息。暂时让程序不出问题,可是这个问题要则么解决啊?
[/Quote]

这个问题我以前也遇到过,但是实在想不起是怎么解决的了。不过,你可以试下看能不能直接相应 “wm_contextmenu”消息。
cd_1_1983 2009-09-08
  • 打赏
  • 举报
回复
感谢楼上,我试过直接响应这个消息,和9楼的代码都有十楼所说的问题
chxy85 2009-09-07
  • 打赏
  • 举报
回复
开玩笑,传说中的小李匪盗岂非浪得虚名~~~~
cd_1_1983 2009-09-07
  • 打赏
  • 举报
回复
cd_1_1983 2009-09-07
  • 打赏
  • 举报
回复
真的有这个问题,我现在是在弹出的新窗口退出后向窗口发一个WM_LBUTTONDOWN消息。暂时让程序不出问题,可是这个问题要则么解决啊?
武哥博文 2009-08-18
  • 打赏
  • 举报
回复
学习了
cd_1_1983 2009-08-18
  • 打赏
  • 举报
回复
上面的写法,在DoMdoal新窗口后新窗口正常,但是当返回到当前窗口后,必须要在当前窗口上点击一下,否则直接关闭该窗口会导致应用程序退出。
cd_1_1983 2009-08-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sevenzhy 的回复:]
if(::SHRecognizeGesture(&shrg) == GN_CONTEXTMENU)//长按键消息
{
    //弹出菜单
    CMenu* pMenu = new(CMenu);
    pMenu->LoadMenu(IDR_POP_DBOP_MENU);
    pMenu = pMenu->GetSubMenu(0);
    pMenu->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
}
else
{
    CTreeCtrl::OnLButtonDown(nFlags, point);
}
[/Quote]
这种写法我之前试过,也是有问题的
zhaojiangang 2009-08-18
  • 打赏
  • 举报
回复
C# 该如何写才好呢
sevenzhy 2009-08-18
  • 打赏
  • 举报
回复
if(::SHRecognizeGesture(&shrg) == GN_CONTEXTMENU)//长按键消息
{
//弹出菜单
CMenu* pMenu = new(CMenu);
pMenu->LoadMenu(IDR_POP_DBOP_MENU);
pMenu = pMenu->GetSubMenu(0);
pMenu->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
}
else
{
CTreeCtrl::OnLButtonDown(nFlags, point);
}
Abcix 2009-08-17
  • 打赏
  • 举报
回复
就是1楼说的那样,只要满足:SHRecognizeGesture(&shrg) == GN_CONTEXTMENU,就是完成了
cd_1_1983 2009-08-17
  • 打赏
  • 举报
回复
常按鼠标会画三个圈,然后才弹出菜单。
指的是画三次圈
cd_1_1983 2009-08-17
  • 打赏
  • 举报
回复

void CTableTreeCtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
SHRGINFO shrg;
shrg.cbSize = sizeof(shrg);
shrg.hwndClient = m_hWnd;
shrg.ptDown.x = point.x;
shrg.ptDown.y = point.y;
shrg.dwFlags = SHRG_RETURNCMD;


ClientToScreen(&point);

TV_HITTESTINFO tvhti;
tvhti.pt = point;
ScreenToClient(&tvhti.pt);
SelectItem(HitTest(&tvhti));

if(::SHRecognizeGesture(&shrg) == GN_CONTEXTMENU)//长按键消息
{
//弹出菜单
CMenu* pMenu = new(CMenu);
pMenu->LoadMenu(IDR_POP_DBOP_MENU);
pMenu = pMenu->GetSubMenu(0);
pMenu->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
}
CTreeCtrl::OnLButtonDown(nFlags, point);
}

以上代码有问题
1、弹出菜单后点击菜单项,菜单消失后,在控件上的第一次鼠标单击不会响应。如何菜单项DoModal一个对话框,在对话框显示后点击对话框空白区域,会马上对到原来的对话框上(显示右键菜单的那个)

2、当把代码
CTreeCtrl::OnLButtonDown(nFlags, point);
放到
ClientToScreen(&point);
下一行时,常按鼠标会画三个圈,然后才弹出菜单。

出现上述问题我该怎么解决啊?
sobug 2009-08-14
  • 打赏
  • 举报
回复
楼上满分
小李匪盗 2009-08-14
  • 打赏
  • 举报
回复
http://blog.csdn.net/pknife/archive/2008/05/21/2467577.aspx
sevenzhy 2009-08-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pknife 的回复:]
http://blog.csdn.net/pknife/archive/2008/05/21/2467577.aspx
[/Quote]

哇靠~~学习了。

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧