搜索
bottom↓
回复: 7

ucgui 触摸屏与对话框按钮问题

[复制链接]

出0入0汤圆

发表于 2010-9-20 13:24:14 | 显示全部楼层 |阅读模式
各位朋友好,我在使用ucgui做触摸屏和对话框按钮的时候遇到点问题向大家请教一下啊
我把触摸屏的底层驱动的四个函数编写好了,并且在一个任务中调用 GUI_TOUCH_Exec();函数,并且把触摸屏消息封装成了MOUSE消息,如下:  
  GUI_HID_STATE   TsState;         GUI_PID_STATE   *ptr;                  INT32U  Tpressed ;         for(;;)           {                                     GUI_TOUCH_Exec();                 Tpressed=GUI_TOUCH_GetState(&TsState);              if ( Tpressed!=0)               {                                           Uart_Printf(s8);                  Uart_Printf ("\n %d,%d",TsState.x,TsState.y);                                 ptr->x=TsState.x+30;                  ptr->y=TsState.y+10;                  ptr->Pressed= Tpressed;               OSTimeDly(5);  
              }
然后在创建对话框的时候创建了一个按钮
  创建按钮代码如下:BUTTON_CreateIndirect,   "OK",     GUI_ID_OK,     100,  5,   60,  20 },
   并且设置了回调函数如下:
  
void  _cbCallback(WM_MESSAGE * pMsg)        {         
            int NCode, Id;
            WM_HWIN  hListBox1;
             WM_HWIN hWin = pMsg->hWin;          //目标窗体句柄                         Uart_Printf ("\n The frame callback is opreting");          switch (pMsg->MsgId)           {                               case WM_INIT_DIALOG:                           //初始化对话框资源                      hListBox1 = WM_GetDialogItem(hWin, GUI_ID_LISTBOX0);  //得到列表框句柄           LISTBOX_SetText(hListBox1, _apListBox);           break;                                                      case WM_KEY:
          switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)           {
           case GUI_KEY_ESCAPE:
           GUI_EndDialog(hWin, 1);           Uart_Printf ("\n The Diolog is del");                        break;
            case GUI_KEY_ENTER:
            GUI_EndDialog(hWin, 0);    Uart_Printf ("\n The Diolog is delete");           break;           }           break;                               case WM_NOTIFY_PARENT:          //此消息将子窗体的外设输入的消息传递到它的父窗体                                          //因为消息一般统一在父窗体统一处理
          Id  = WM_GetId(pMsg->hWinSrc);    /* Id of widget */
           NCode = pMsg->Data.v;               /* Notification code */
         switch (NCode)           {
            case WM_NOTIFICATION_RELEASED:     /*React only if released */
           if (Id == GUI_ID_OK)            {                                        /* OK Button*/
            GUI_EndDialog(hWin, 0);             Uart_Printf ("\nthe butoon  and diolog is opration!");          }
          if (Id == GUI_ID_CANCEL)           {                                            /* Cancel Button*/
            GUI_EndDialog(hWin, 1);
          }
          break;
       }          break;
    default:
      WM_DefaultProc(pMsg);
  }
       void  Create_Dialog (void)         {               GUI_CreateDialogBox(                      _aDialogCreate,                     GUI_COUNTOF(_aDialogCreate),                     &_cbCallback,                     0, 0, 0);           }
      现在的问题是只有我用触摸笔点击按钮的左上角时回调函数的判断按钮部分才起作用,
我怎样改才可以实现点击按钮的空间的任何部分都是起作用的啊?
我看把触摸屏消息封装成MOUSE消息时是需要提供 触摸的X,Y,和PRESSED ,那么只是一点的坐标啊,要怎样修改呢?谢谢

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。

出0入0汤圆

 楼主| 发表于 2010-9-20 15:19:54 | 显示全部楼层
以上问题已解决,是我的触摸屏没有校正好的原因
不过,现在发现校正好后,现在点击OK按钮应该是删除对话框吧?可是现在点击后只是按钮的颜色改变,对话框并没有消失啊?

出0入0汤圆

 楼主| 发表于 2010-9-20 15:57:11 | 显示全部楼层
还有一个问题就是用触摸笔一点对话框的标题栏部分就会又弹出一个新的对话框,怎么回事啊

出0入0汤圆

发表于 2011-7-5 11:48:00 | 显示全部楼层
楼主好,我现在遇见一个和你类似的问题,就是建立了GUI_MessageBox( "This text is shown\nin a message box","Caption/Titl",GUI_MESSAGEBOX_CF_MOVEABLE);按下OK键有反应,但是好像按键再等待抬起一样就停住了,请问这是怎么回事?还请教您的指导!您指导一下。

出0入0汤圆

发表于 2011-7-5 11:51:09 | 显示全部楼层
楼主能不能留下个联系方式我们一起学习一下啊,我现在在s3c2440的平台上做开发,已经嵌好了ucosiI和ucgui,就是触摸屏之中不完善,我的qq:232310722 向快乐出发

出0入0汤圆

发表于 2011-7-5 16:21:13 | 显示全部楼层
不太清楚。。。

出0入0汤圆

 楼主| 发表于 2011-8-4 23:09:26 | 显示全部楼层
大家好,我是前段时间学着玩遇到了这问题,最近没时间稿这些了,不好意思啊,楼上的兄弟们。。。。

出0入0汤圆

发表于 2011-8-26 14:54:56 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-9-27 07:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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