硬汉嵌入式论坛

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

[emWin] 建立BUTTON按钮后 删不掉 请教大家

[复制链接]

3

主题

9

回帖

3

积分

新手上路

积分
3
发表于 2017-3-16 09:47:21 | 显示全部楼层 |阅读模式
小弟调试emwin过程中建立两个BUTTON按钮,按下其中一个会删除第一个,但是调试过程中发下不起作用,还请前辈指点一下,代码如下,谢谢!

static void _cbLanguage(WM_MESSAGE* pMsg)
{
    int NCode, Id;
    int        xSize;
        int        ySize;
    WM_HWIN hButton;
    WM_HWIN hWin = pMsg->hWin;
    switch (pMsg->MsgId)
    {
        case WM_CREATE:
            WM_SetFocus(hWin);
                    hButton = _CreateButton(hWin, "Home", GUI_ID_BUTTON0, 0, 725, 120,  75, 0); //创建的第一个按钮并得到句柄
                  _CreateButton(hWin, "Delete", GUI_ID_BUTTON1, 120, 725, 120,  75, 0); //创建第二个按钮
            break;
        case WM_INIT_DIALOG:
                break;
         case WM_KEY:
                switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
                {
                    case GUI_KEY_ESCAPE:
                           GUI_EndDialog(hWin, 1);
                             break;
                    case GUI_KEY_TAB:
                        WM_SetFocusOnNextChild(hWin);
                        break;
        }
            break;
        case WM_PAINT:
        _PaintFrame();            
        break;
        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_RELEASED:

                            break;
                    }
                    break;
        case GUI_ID_BUTTON1:  
                switch(NCode)
                {
                   case WM_NOTIFICATION_RELEASED:  //按下BUTTON1后删除第一个创建的按钮
                      BUTTON_Delete(hButton);
                        break;
                }
                break;

            }
            break;
        default:
        WM_DefaultProc(pMsg);
    }
}
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117617
QQ
发表于 2017-3-16 11:08:21 | 显示全部楼层
仅看你这部分提供的代码,可以删除的,另外就是确认下点击删除后,是否进入到此按钮的回调函数里面了。
回复

使用道具 举报

3

主题

9

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2017-3-16 11:31:15 | 显示全部楼层

回 eric2013 的帖子

eric2013:仅看你这部分提供的代码,可以删除的,另外就是确认下点击删除后,是否进入到此按钮的回调函数里面了。 (2017-03-16 11:08) 
确实是进入到了回调函数里了,我把删除换成建立新按钮就可以,唯独删除不起作用,要是下面这样写的话就可以删除,就是放到按键抬起后删除就不行,建立按钮的函数是移植ATM机里面的
case WM_CREATE:
            WM_SetFocus(hWin);
                    hButton = _CreateButton(hWin, "Home", GUI_ID_BUTTON0, 0, 725, 120,  75, 0);//建立
                   GUI_Delay(100);//延时
                    BUTTON_Delete(hButton);//删除
回复

使用道具 举报

3

主题

9

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2017-3-16 11:32:19 | 显示全部楼层

回 eric2013 的帖子

eric2013:仅看你这部分提供的代码,可以删除的,另外就是确认下点击删除后,是否进入到此按钮的回调函数里面了。 (2017-03-16 11:08)
static WM_HWIN _CreateButton(WM_HWIN hParent, const char* pText, int Id, int x, int y, int w, int h, unsigned TextId)
{
    WM_HWIN hButton;
    hButton = BUTTON_CreateEx(x, y, w, h, hParent, WM_CF_SHOW, 0, Id);


    BUTTON_SetText      (hButton,    pText);
//    BUTTON_SetFont      (hButton,    FRAME_BUTTON_FONT);
    BUTTON_SetBkColor   (hButton, 0, FRAME_BUTTON_BKCOLOR0);
    BUTTON_SetBkColor   (hButton, 1, FRAME_BUTTON_BKCOLOR1);
    BUTTON_SetBkColor   (hButton, 2, FRAME_BUTTON_BKCOLOR2);
    BUTTON_SetTextColor (hButton, 0, FRAME_BUTTON_COLOR0);
    BUTTON_SetTextColor (hButton, 1, FRAME_BUTTON_COLOR1);
    BUTTON_SetTextColor (hButton, 2, FRAME_BUTTON_COLOR0);
    WIDGET_SetEffect    (hButton,    FRAME_BUTTON_EFFECT);


    return hButton;
}
回复

使用道具 举报

3

主题

9

回帖

3

积分

新手上路

积分
3
 楼主| 发表于 2017-3-17 09:48:13 | 显示全部楼层

回 eric2013 的帖子

eric2013:仅看你这部分提供的代码,可以删除的,另外就是确认下点击删除后,是否进入到此按钮的回调函数里面了。 (2017-03-16 11:08) 
找到原因了,WM_HWIN hButton;把它设置成全局变量就行了,
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-18 11:48 , Processed in 0.040401 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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