OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6064|回复: 6

BUTTON_CreateEx()创建的按钮,无法触发事件

[复制链接]

25

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
金钱
297
注册时间
2016-6-2
在线时间
49 小时
发表于 2016-8-23 21:38:06 | 显示全部楼层 |阅读模式
1金钱
下面为回调函数,动态创建的按钮,按下为啥没有事件产生?

static void _cbKeyPad(WM_MESSAGE * pMsg) {
  static int LowerCase;
  WM_HWIN    hWin;
  WM_HWIN    hButton,hEdit;
  char       c;
  int        Id;
  int        NCode;
  int        xSize;
  int        ySize;
  unsigned   i;
  unsigned char keystr[5];
  int keystatus=0; //0- Upcaps; 1- LowCaps; 2 - Number;
  
  hWin = pMsg->hWin;
  switch (pMsg->MsgId) {
  case APP_INIT_LOWERCASE:
    LowerCase = 0;
    break;
  case WM_CREATE:
    //
    // Create the keyboard buttons
    //
    //hEdit = EDIT_CreateEx(6, 6, 180, 24, hWin, WM_CF_SHOW, 0, ID_EDIT_1,"");
    hEdit = WM_GetDialogItem(hWin, ID_EDIT_1);
    WM_SetFocus(hEdit);
    keystatus = 0;
    for (i = 0; i < GUI_COUNTOF(_aButtonData); i++) {
      hButton = BUTTON_CreateEx(_aButtonData.xPos, _aButtonData.yPos+10, _aButtonData.xSize, _aButtonData.ySize,
                                hWin, WM_CF_SHOW | WM_CF_HASTRANS, 0, ID_BUTTON + i);
      BUTTON_SetText(hButton, _aButtonData.acLabel1);
      BUTTON_SetFocussable(hButton, 0);
    }
    break;
  case WM_PAINT:
    //
    // Draw background
    //
    xSize = WM_GetWindowSizeX(hWin);
    ySize = WM_GetWindowSizeY(hWin);
    GUI_SetColor(COLOR_BORDER);
    GUI_DrawRect(0, 0, xSize - 1, ySize - 1);
    GUI_DrawGradientV(1, 1, xSize - 2, ySize - 2, COLOR_KEYPAD0, COLOR_KEYPAD1);
    break;
  case WM_NOTIFY_PARENT:
    //
    // Send key message to currently focused window
    //
    Id    = WM_GetId(pMsg->hWinSrc);
    NCode = pMsg->Data.v;
    switch (NCode) {
    case WM_NOTIFICATION_RELEASED: //下面的代码无法调用。。。。因为没有事件
        hButton = WM_GetDialogItem(hWin, Id);
        BUTTON_GetText(hButton, keystr, 5);
        if (strlen(keystr)>1)
        {
            if (!strcmp(keystr,"ABC")){

                    keystatus = 0;
                    update_key(hWin, keystatus);

            }
            if (!strcmp(keystr, "Num")){
                keystatus = 2;
                update_key(hWin, keystatus);
            }
            if (!strcmp(keystr, "Caps")){
                if (keystatus==0)
                {
                    keystatus = 1;
                }
                else
                {
                    keystatus = 0;
                    }
                update_key(hWin, keystatus);
            }
            if (!strcmp(keystr, "Esc")){
                GUI_MEMDEV_ShiftOutWindow(hWin, 500, GUI_MEMDEV_EDGE_BOTTOM);
                GUI_EndDialog(hWin, 0);
            }
        }
        else
        {
                    c = keystr[0];
                    if (c == 0x0d)
                    {
                        hEdit = WM_GetDialogItem(hWin, ID_EDIT_1);
                        EDIT_GetText(hEdit, returnstr, 30);
                        GUI_MEMDEV_ShiftOutWindow(hWin, 500, GUI_MEMDEV_EDGE_BOTTOM);
                        GUI_EndDialog(hWin, 0);
                    }
                    GUI_StoreKeyMsg(c, 1);
                    GUI_StoreKeyMsg(c, 0);               
            }
        }
      break;
    }
}

最佳答案

查看完整内容[请看2#楼]

无法解决,早就使用其他方案实现了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

25

主题

96

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
297
金钱
297
注册时间
2016-6-2
在线时间
49 小时
 楼主| 发表于 2016-8-23 21:38:07 | 显示全部楼层
1258289852 发表于 2016-10-30 16:20
你好,请问问题解决了吗?我也遇到同样的问题!

无法解决,早就使用其他方案实现了。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165287
金钱
165287
注册时间
2010-12-1
在线时间
2107 小时
发表于 2016-8-24 20:26:06 | 显示全部楼层
帮顶
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
185
金钱
185
注册时间
2016-7-14
在线时间
36 小时
发表于 2016-9-7 10:58:19 | 显示全部楼层
你备注红色部分的地方,switch扫描的不应该是控件的ID么?
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
25
金钱
25
注册时间
2020-9-24
在线时间
7 小时
发表于 2016-10-30 16:20:24 | 显示全部楼层
你好,请问问题解决了吗?我也遇到同样的问题!
回复

使用道具 举报

4

主题

66

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3324
金钱
3324
注册时间
2016-11-9
在线时间
296 小时
发表于 2017-4-14 12:47:32 | 显示全部楼层
没有事件触发。。。。。
回复

使用道具 举报

21

主题

71

帖子

0

精华

初级会员

Rank: 2

积分
165
金钱
165
注册时间
2013-12-1
在线时间
87 小时
发表于 2017-4-27 16:12:20 | 显示全部楼层
有时候WM_NOTIFY_PARENT会在父窗口callback中触发,而不是控件的callback中触发,很奇怪,不知怎么回事
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-2 00:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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