请选择 进入手机版 | 继续访问电脑版

安富莱电子论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 173|回复: 7
收起左侧

[STemWin] 问问滑动和点击如何解决点击误触问题。。

[复制链接]

10

主题

62

帖子

82

积分

初级会员

积分
82
发表于 2019-3-15 09:46:35 | 显示全部楼层 |阅读模式
本帖最后由 cz123123 于 2019-3-15 15:37 编辑
  1. static void cb_ActiveWindow(WM_MESSAGE * pMsg) {
  2.   //int     NCode;
  3.   int     Id;
  4.   WM_MOTION_INFO * pInfo;
  5.         GUI_PID_STATE *pid = NULL;
  6.         static int yPos =        0 ;
  7.         static GUI_TIMER_TIME t_Start=0;
  8.         u16 t_End=0;
  9.   switch (pMsg->MsgId) {
  10.   case WM_INIT_DIALOG:

  11.     break;
  12.   case WM_NOTIFY_PARENT:
  13.     Id  = WM_GetId(pMsg->hWinSrc);
  14.     //NCode = pMsg->Data.v;
  15.     switch(Id) {
  16.    
  17.     }
  18.     break;
  19.         case WM_MOTION:
  20.                  pInfo = (WM_MOTION_INFO *)pMsg->Data.p;
  21.                 switch (pInfo->Cmd)
  22.                         {
  23.                                 /* Motion功能初始化,设置X方向和Y方向都支持滑动 */
  24.                                 case WM_MOTION_INIT:
  25.                                         pInfo->Flags =   WM_CF_MOTION_Y | WM_MOTION_MANAGE_BY_WINDOW;
  26.                                         pInfo->SnapY = 1;
  27.                                         break;
  28.                                 case WM_MOTION_MOVE:
  29.                                         yPos += pInfo->dy;
  30.                                         WM_MoveChildTo(WM_GetFirstChild(WM_GetParent(pMsg->hWin)), 0, yPos);
  31.                                   if(pInfo->FinalMove&&yPos>100)
  32.                                         {
  33.                                                 yPos = 0;
  34.                                           WM_MoveChildTo(WM_GetFirstChild(WM_GetParent(pMsg->hWin)), 0, 0);
  35.                                         }        
  36.                                         else if(pInfo->FinalMove&&yPos<-200)
  37.                                         {
  38.                                                 yPos = -270;
  39.                                           WM_MoveChildTo(WM_GetFirstChild(WM_GetParent(pMsg->hWin)), 0, -270);
  40.                                         }
  41.                                         break;
  42.                                 case WM_MOTION_GETPOS:
  43.                                      pInfo->yPos = yPos;
  44.                                 break;
  45.                         }
  46.                  break;
  47.                 case WM_DELETE:
  48.                 myfree(SRAMEX,spl_param);
  49.                 spl_param=NULL;
  50.                 break;
  51.                 case WM_TOUCH:
  52.                            pid = (GUI_PID_STATE*)pMsg->Data.p;
  53.                      if(pid)
  54.                                  {         
  55.                                                 if(pid->Pressed)
  56.                                                 {
  57.                                                          t_Start        = GUI_GetTime(); //获取系统时间
  58.                                                    printf("点击\r\n");
  59.                                                 }
  60.                                                 else
  61.                                                 {
  62.                                                          t_End=GUI_GetTime()-t_Start;
  63.                                                    printf("释放\r\n");
  64.                                                 }
  65.                                                 printf("t_Start %d t_End %d\r\n",t_Start,t_End);
  66.                                                
  67.                                  }
  68.                         break;
  69.   default:
  70.     WM_DefaultProc(pMsg);
  71.     break;
  72.   }
  73. }
复制代码
是这样,我是这个卡片式的一块一块的窗口块一个大的窗口下,然后我需要滑动和点击。。第一种 是直接滑动 大窗口  但经常误触小窗口内的释放(我释放后做处理部分的事件)然后以为用点击和释放之间用获取时间来区别点击和滑动,效果不佳,,第二个 再加一个透明的 ,,但发现和第一个差不多,也是区别不了滑动和点击,而且还多一点就是还要隐藏窗口。。不知道咋区别 QQ截图20190315153527.jpg

回复

使用道具 举报

5677

主题

3万

帖子

4万

积分

管理员

做人第一,工作第二

Rank: 9Rank: 9Rank: 9

积分
45712
QQ
发表于 2019-3-15 10:06:40 | 显示全部楼层
V6综合Demo主界面我有做这个的处理,图标是用的ICONVIEW,滑动是Motion功能

你只需看MainTask.C文件即可
http://forum.armfly.com/forum.ph ... &extra=page%3D1
淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

3

主题

96

帖子

102

积分

初级会员

积分
102
发表于 2019-3-15 12:16:48 | 显示全部楼层
这个示例对你有用,我就是这么做的:
2019-03-15_121415.png
回复

使用道具 举报

10

主题

62

帖子

82

积分

初级会员

积分
82
 楼主| 发表于 2019-3-15 14:43:43 | 显示全部楼层
eric2013 发表于 2019-3-15 10:06
V6综合Demo主界面我有做这个的处理,图标是用的ICONVIEW,滑动是Motion功能

你只需看MainTask.C文件即可 ...

我看过这个,这个是由于有控件好解决。。如果不是控件而是窗口呢?就是一个大窗口下有好几个小窗口,不是官方控件,也就没办法获取判断点击
回复

使用道具 举报

25

主题

1342

帖子

1392

积分

至尊会员

积分
1392
发表于 2019-3-15 14:46:07 | 显示全部楼层
cz123123 发表于 2019-3-15 14:43
我看过这个,这个是由于有控件好解决。。如果不是控件而是窗口呢?就是一个大窗口下有好几个小窗口,不是 ...

是不是类似 window mobile风格?
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

10

主题

62

帖子

82

积分

初级会员

积分
82
 楼主| 发表于 2019-3-15 15:20:29 | 显示全部楼层
byccc 发表于 2019-3-15 14:46
是不是类似 window mobile风格?

差不多。。我截个图
回复

使用道具 举报

10

主题

62

帖子

82

积分

初级会员

积分
82
 楼主| 发表于 2019-3-15 15:39:26 | 显示全部楼层
我已经解决了。。就是上面的滑动,然后方块回调函数,点击在里面保存坐标 释放后获取坐标比对是否小于某个值。。就认为是点击,不是就认为滑动
回复

使用道具 举报

5677

主题

3万

帖子

4万

积分

管理员

做人第一,工作第二

Rank: 9Rank: 9Rank: 9

积分
45712
QQ
发表于 2019-3-16 10:28:37 | 显示全部楼层
cz123123 发表于 2019-3-15 15:39
我已经解决了。。就是上面的滑动,然后方块回调函数,点击在里面保存坐标 释放后获取坐标比对是否小于某个 ...

解决了就好。
淘宝小店: https://armfly.taobao.com/
专注,努力,用心的做好每一件事情,Fighting!
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|安富莱电子论坛 ( 鄂ICP备09023347号,公安机关备案号42010602000201 )

GMT+8, 2019-5-26 21:39 , Processed in 0.190837 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表