4722|18

3

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于touch触控笔长按弹出菜单的问题 [复制链接]

触控笔在触摸屏上长按的时候,应该会有一个菜单弹出来。请问怎样实现这个菜单呢?非常感谢。

最新回复

恭喜,出问题未必是坏事,搞定之后很爽吧,哈哈。  详情 回复 发表于 2009-1-5 14:35
点赞 关注

回复
举报

1

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
case WM_LBUTTONDOWN:

  {
   SHRGINFO shrg;
   shrg.cbSize = sizeof(shrg);
   shrg.hwndClient = m_hWnd;
   shrg.ptDown.x = LOWORD(lParam);
   shrg.ptDown.y = HIWORD(lParam);
   shrg.dwFlags = SHRG_RETURNCMD;

   CPoint point;
   point.x = shrg.ptDown.x;
   point.y = shrg.ptDown.y;

   if(::SHRecognizeGesture(&shrg) == GN_CONTEXTMENU)//长按键消息
      {
       CMenu menu;
       menu.LoadMenu(IDR_MENU_DOWN);

       CMenu *pPopupMenu = menu.GetSubMenu(0);
      
       ClientToScreen(&point);

       pPopupMenu->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);
      }

}
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
这个要学习一下。对于触摸屏是怎么回事,我估计很快我就会转到LCD,触摸屏上来了。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

4
 
菜单有弹出来了吗?
没有的话加Aygshell组件
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

5
 
Aygshell已经加了,没有菜单弹出。我试一下91program提供的方法,谢谢。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 
91program的方法主要是针对单个应用程序而言的,如果你要使用系统的弹出式菜单那还是会有问题的
加了Aygshell不行,估计你得去检查一下Touch的驱动
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

7
 
关注下,触摸屏是否被干扰。

那个菜单是要在触摸屏在同一个点被按下很长时间才会出来的,如果,触摸屏收到干扰,驱动采集的点有抖动就不会弹出来。
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

8
 
引用 5 楼 hzdysymbol 的回复:
91program的方法主要是针对单个应用程序而言的,如果你要使用系统的弹出式菜单那还是会有问题的
加了Aygshell不行,估计你得去检查一下Touch的驱动

你的意思是说只要加了Aygshell就应该有菜单弹出,是吗?如果没有的话,是否如6楼所说被干扰了呢?谢谢
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

9
 
引用 6 楼 shenmou 的回复:
关注下,触摸屏是否被干扰。

那个菜单是要在触摸屏在同一个点被按下很长时间才会出来的,如果,触摸屏收到干扰,驱动采集的点有抖动就不会弹出来。

我看了一下串口信息,这段时间内采集到的点都很相近,没有大的抖动。还有什么原因会造成呢?谢谢
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

10
 
再确认一下我的组件是否加的正确,谢谢。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

11
 
你是自己写应用程序还是什么?

——我根本就没有选,只要触摸屏可以,编译出来就可以了的,我怀疑是你的触摸屏驱动问题。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

12
 
我们做了几批板子,发现同样的NK 有些板子可以出来右键,有些不行。

你可以看看,在屏幕上用触摸屏画一个选择框,看看这个框是否会抖动。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 11 楼 shenmou 的回复:
我们做了几批板子,发现同样的NK 有些板子可以出来右键,有些不行。

你可以看看,在屏幕上用触摸屏画一个选择框,看看这个框是否会抖动。

看来肯定是驱动有问题了,我根本无法在屏幕上画出选择框来,我在屏幕上画了半天,没有任何选择框出来,点击图标是可以的。请问这个是什么问题呢?非常感谢。
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

14
 
我使用的是TI的TSC2046芯片,有谁做过这个驱动吗?请帮忙看看,谢谢。
驱动执行的基本的流程是:
1、检测到中断
2、设置中断类型为InterruptType   = SYSINTR_TOUCH;
3、检测IRQ状态,如果只点击一次,PrepareNextInterrupt重新enable IRQ,然后InterruptDone。
4、如果是持续点击,则InterruptType 变成SYSINTR_TOUCH_CHANGED,然后PrepareNextInterrupt进入HWEnableTouchTimerIRQ,其中的代码如下:

  1. UINT32 TimerMatch;
  2.     XLLP_OST_HANDLE_T    XllpOSTHandle;

  3.     XllpOSTHandle.pOSTRegs  = (XLLP_OST_T *)  g_pOSTRegs;
  4.     XllpOSTHandle.pINTCRegs = (XLLP_INTC_T *) g_pICRegs;
  5.    
  6.     TimerMatch = (XllpOSTHandle.pOSTRegs->oscr0 + TimeInterval);
  7.     XllpOstConfigureTimer (&XllpOSTHandle, MatchReg1, TimerMatch);
复制代码

我看了一下Wince自带的touch驱动,流程也是这样的,为什么无法画出选择框呢?请大家帮忙看看。
谢谢!
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

15
 
我使用的是TI的TSC2046芯片,有谁做过这个驱动吗?请帮忙看看,谢谢。
驱动执行的基本的流程是:
1、检测到中断
2、设置中断类型为InterruptType   = SYSINTR_TOUCH;
3、检测IRQ状态,如果只点击一次,PrepareNextInterrupt重新enable IRQ,然后InterruptDone。
4、如果是持续点击,则InterruptType 变成SYSINTR_TOUCH_CHANGED,然后PrepareNextInterrupt进入HWEnableTouchTimerIRQ,其中的代码如下:

  1. UINT32 TimerMatch;
  2.     XLLP_OST_HANDLE_T    XllpOSTHandle;

  3.     XllpOSTHandle.pOSTRegs  = (XLLP_OST_T *)  g_pOSTRegs;
  4.     XllpOSTHandle.pINTCRegs = (XLLP_INTC_T *) g_pICRegs;
  5.    
  6.     TimerMatch = (XllpOSTHandle.pOSTRegs->oscr0 + TimeInterval);
  7.     XllpOstConfigureTimer (&XllpOSTHandle, MatchReg1, TimerMatch);
复制代码

我看了一下Wince自带的touch驱动,流程也是这样的,为什么无法画出选择框呢?请大家帮忙看看。
谢谢!
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

16
 
开一个线程计时不知道可不可以?超过规定的时间就退出线程,并返回长按消息!
 
 
 

回复

34

帖子

0

TA的资源

一粒金砂(中级)

17
 
引用 7 楼 jerry79 的回复:
引用 5 楼 hzdysymbol 的回复:
91program的方法主要是针对单个应用程序而言的,如果你要使用系统的弹出式菜单那还是会有问题的
加了Aygshell不行,估计你得去检查一下Touch的驱动

你的意思是说只要加了Aygshell就应该有菜单弹出,是吗?如果没有的话,是否如6楼所说被干扰了呢?谢谢

Aygshell是一定要加的,不然没有长按弹出式菜单
你的问题现在肯定是Touch驱动的问题,你的芯片也没有用过,帮不了你
不过你重点查查采样的间隔时间,及触笔离开屏幕的判断等
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

18
 
问题解决了,TI的原始驱动可能有些问题。在getpoint函数中更改了一些参数就好了。谢谢大家的帮忙,结贴了。
 
 
 

回复

1

帖子

0

TA的资源

禁止访问

19
 
提示: 作者被禁止或删除 内容自动屏蔽
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表