硬汉嵌入式论坛

 找回密码
 立即注册
查看: 11450|回复: 7
收起左侧

[emWin] emwin演示例程使用时候发现

[复制链接]

3

主题

6

回帖

3

积分

新手上路

积分
3
发表于 2013-6-30 13:22:49 | 显示全部楼层 |阅读模式
emwin演示例程使用时候发现触摸屏是可以连击的,也就是按钮按下去不抬起,是可以连续输入这个按钮信息的,这个和现有习惯不符合。实际的系统中我们很希望是按键按下去的时候,这个按钮有颜色或者位置的变化,但是要一直等到笔抬起来的时候才去执行这个按钮对应的功能,但是emwin根本不会等待的,一直连续操作这个按钮的功能,各位有没有什么对策,有碰到相同问题的来讨论下。给点思路。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2013-6-30 13:51:29 | 显示全部楼层
emWin的按钮功能和我们平时用的是一样的。可能是你没有设置好吧
回复

使用道具 举报

3

主题

6

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2013-6-30 16:02:32 | 显示全部楼层
能否再详细些,是emwin里有宏定义开关控制?还是我要自己写代码来控制?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2013-6-30 17:09:43 | 显示全部楼层
case WM_NOTIFY_PARENT:
            Id = WM_GetId(pMsg->hWinSrc);
            NCode = pMsg->Data.v;        
            switch (Id)
            {
                case GUI_ID_OK:
                    if(NCode==WM_NOTIFICATION_RELEASED)
                        GUI_EndDialog(hWin, 0);
                    break;
                case GUI_ID_CANCEL:
                    if(NCode==WM_NOTIFICATION_RELEASED)
                        GUI_EndDialog(hWin, 0);
                    break;
                case GUI_ID_BUTTON0:
                    switch(NCode)
                    {
                         //按键点击下的消息处理
                          case WM_NOTIFICATION_CLICKED:
                            OnButtonClicked(pMsg);
                            break;
                        //按键释放后的消息处理
                        case WM_NOTIFICATION_RELEASED:
                            OnButtonReleased(pMsg);
                            break;
                        //从按键上面移出后的状态
                        case WM_NOTIFICATION_MOVED_OUT:
                            OnButtonMovedOut(pMsg);
                            break;
                    }
                    break;
            }
回复

使用道具 举报

3

主题

6

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2013-6-30 20:25:15 | 显示全部楼层
OnButtonClicked(pMsg);
OnButtonReleased(pMsg);
OnButtonMovedOut(pMsg);
这三个函数我的emwin版本里没有找到,是不是版本不同啊??
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2013-6-30 20:29:50 | 显示全部楼层

回 zoynli 的帖子

zoynli:OnButtonClicked(pMsg);
OnButtonReleased(pMsg);
OnButtonMovedOut(pMsg);
这三个函数我的emwin版本里没有找到,是不是版本不同啊?? (2013-06-30 20:25) 
这几个函数没有用,这个是用uCGUIBulder自己生成的,这里面写自己的函数就可以
回复

使用道具 举报

3

主题

6

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2013-6-30 21:16:21 | 显示全部楼层
谢谢斑竹无私指导!!!
回复

使用道具 举报

3

主题

6

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2013-7-7 12:23:07 | 显示全部楼层

emwin演示例程使用时候发现触摸屏的单击事件

经过进一步跟踪emwin,它本身就是支持单击响应的,底层的touch.c在处理触摸屏按下后(不抬起)的坐标和状态时会产生跳变,引起Pressed参数发生0和1的间隔跳变,所以在建立button后, 操作Key = GUIDEMO_WaitKey();时,就会不断得到键值,也就不断的响应了,实际上emwin的流程是不抬起不响应的。
由此相信处理好WM_HandlePID和 _OnTouch函数可以轻松实现双击和连击。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 04:04 , Processed in 0.171626 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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