硬汉嵌入式论坛

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

[emWin] emwin点击自己绘制的2D图形怎么触发一个点击事件进行处理

[复制链接]

3

主题

6

回帖

15

积分

新手上路

积分
15
发表于 2020-3-2 17:39:53 | 显示全部楼层 |阅读模式
详细问题如下:自己画了一个圆形,想实现液晶屏上点击这图形就变换圆的颜色,这个圆形是自己画的,不是标准控件,怎么实现点击这一区域产生一个触摸事件让系统知道呢?

回复

使用道具 举报

3

主题

6

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2020-3-2 17:43:04 | 显示全部楼层
Sorry,发现发错版块了,没找到在哪儿删除。请管理员帮忙删除,我在对应版块重新发一个贴。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115787
QQ
发表于 2020-3-2 17:44:12 | 显示全部楼层
可以使用WM_TOUCH消息获取坐标位置。
回复

使用道具 举报

3

主题

6

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2020-3-2 17:46:42 | 显示全部楼层
eric2013 发表于 2020-3-2 17:44
可以使用WM_TOUCH消息获取坐标位置。

Wow,感谢Eric大神这么迅速的回复,马上去试。
回复

使用道具 举报

3

主题

6

回帖

15

积分

新手上路

积分
15
 楼主| 发表于 2020-3-4 16:36:44 | 显示全部楼层
感谢Eric,已经实现,贴出代码供大家参考。

static void _cbDialog(WM_MESSAGE * pMsg) {
  const void * pData;
  WM_HWIN      hItem;
  U32          FileSize;
  int          NCode;
  int          Id;

  switch (pMsg->MsgId) {
  case WM_TOUCH:
    if(pMsg->Data.p)
    {
      GUI_PID_STATE *pState;
      pState = (GUI_PID_STATE*)pMsg->Data.p;

      if(pState->Pressed == 1)                         //按键按下
      {      
        if(pState->x > 10 && pState->x < 78 && pState->y > 25 && pState->y < 102)
        {
           //获取到指定区域有按下信息
        }
      }
    }
    break;
  case WM_PAINT:
      GUI_SetColor(GUI_WHITE);
      GUI_FillRoundedRect(10, 25, 78, 102, 34);
    break;
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-18 22:11 , Processed in 0.306146 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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