硬汉嵌入式论坛

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

[emWin] 关于emwin对话框上的button操作问题

[复制链接]

8

主题

51

回帖

8

积分

初级会员

一起来学习

积分
8
发表于 2016-3-1 10:12:02 | 显示全部楼层 |阅读模式
想问一下,如果创建一个对话框,然后对话框资源表上创建一些EDIT,调用的时候,点击EDIT可以响应一些操作。
但是如果在对话框资源表上不创建资源,而是在初始化函数的时候创建一些EDIT,然后对其进行操作,点击的时候没有响应,不知道是为什么?





static const GUI_WIDGET_CREATE_INFO _aDialogCreate222[] = {
    { FRAMEWIN_CreateIndirect,  "",           0, 0,  0,  800,480,0,0},
    //  { EDIT_CreateIndirect,      "",                                      GUI_ID_EDIT1,            275,154,326,30, 0,0},
      //{ EDIT_CreateIndirect,      "",                                      GUI_ID_EDIT2,            275,210,326,30, 0,0},
      //{ EDIT_CreateIndirect,      "",                                      GUI_ID_EDIT3,            275,264,326,30, 0,0},
   { BUTTON_CreateIndirect,    NULL,           GUI_ID_BUTTON8,          BTN_X1, BTN_Y,BTN_L, BTN_H, 0,0},
    { BUTTON_CreateIndirect,    NULL,           GUI_ID_BUTTON9,          BTN_X2,BTN_Y,BTN_L, BTN_H, 0,0},
         
};

void PaintDialog222(WM_MESSAGE * pMsg)
{
    WM_HWIN hWin = pMsg->hWin;
}
void InitDialog222(WM_MESSAGE * pMsg)
{
             WM_HWIN hWin = pMsg->hWin;
            //FRAMEWIN
             FRAMEWIN_SetBarColor(hWin,1,WIN_BARCOLOR);
             FRAMEWIN_SetClientColor(hWin,WINDOW_COLOR);    //éè???í?§????é?
             FRAMEWIN_SetTextColor(hWin,FRAM_FONTCOLOR);//éè??±êìaà?×?ì???é?
             FRAMEWIN_SetFont(hWin,&GUI_FontHZ_YouYuan_19);
             FRAMEWIN_SetTextAlign(hWin,GUI_TA_VCENTER|GUI_TA_LEFT);
             FRAMEWIN_SetTitleHeight(hWin,TITLEBAR);
将资源表中的EDIT屏蔽,然后使用EDIT_CreateEx创建两个EDIT,但是点击的时候没有响应
        EDIT_CreateEx(275,105+150,326,30,hWin,WM_CF_SHOW,0,GUI_ID_EDIT3,38);
        EDIT_CreateEx(275,105+100,326,30,hWin,WM_CF_SHOW,0,GUI_ID_EDIT2,38);
        EDIT_SetMaxLen(WM_GetDialogItem(hWin,GUI_ID_EDIT0),38);
        EDIT_SetMaxLen(WM_GetDialogItem(hWin,GUI_ID_EDIT1),38);
        EDIT_SetMaxLen(WM_GetDialogItem(hWin,GUI_ID_EDIT2),38);
        EDIT_SetMaxLen(WM_GetDialogItem(hWin,GUI_ID_EDIT3),38);
        EDIT_SetMaxLen(WM_GetDialogItem(hWin,GUI_ID_EDIT4),38);
        EDIT_SetMaxLen(WM_GetDialogItem(hWin,GUI_ID_EDIT5),38);
        EDIT_SetText(WM_GetDialogItem(hWin,GUI_ID_EDIT0),"aaaaaaaaaaaaaa");//éè??edité???±?μ???é?
        EDIT_SetText(WM_GetDialogItem(hWin,GUI_ID_EDIT1),"bbbbbbbbbbbbbb");//éè??edité???±?μ???é?
        EDIT_SetText(WM_GetDialogItem(hWin,GUI_ID_EDIT2),"cccccccccccccc");//éè??edité???±?μ???é?
        EDIT_SetText(WM_GetDialogItem(hWin,GUI_ID_EDIT3),"ddddddddddddddd");//éè??edité???±?μ???é?
                WM_SetFocus(hWin);     
}

static void _cbCallback222(WM_MESSAGE * pMsg)
{      
    int NCode, Id;
    WM_HWIN hWin = pMsg->hWin;
    switch (pMsg->MsgId)
    {
    case WM_PAINT:
            PaintDialog222(pMsg);
            break;
        case WM_INIT_DIALOG:
            InitDialog222(pMsg);
            break;
         
        case WM_NOTIFY_PARENT:
            Id = WM_GetId(pMsg->hWinSrc);
            NCode = pMsg->Data.v;        
            switch (NCode)
            {
            case WM_NOTIFICATION_RELEASED:
                     if(Id==GUI_ID_EDIT0)
                       {         
                 hDlg4=GUI_CreateDialogBox(_aDialogHistory,GUI_COUNTOF(_aDialogHistory),&_cbCallbackHistory,hWin,276,170);
                 WM_MakeModal(hDlg4);
                       GUI_ExecCreatedDialog(hDlg4);
                        
                      }
                    if(Id==GUI_ID_EDIT1)
                       {
                             hDlg4=GUI_CreateDialogBox(_aDialogHistory,GUI_COUNTOF(_aDialogHistory),&_cbCallbackHistory1,hWin,276,170);
                 WM_MakeModal(hDlg4);
                             GUI_ExecCreatedDialog(hDlg4);
                      }
                    if(Id==GUI_ID_EDIT2)
                       {
                             hDlg4=GUI_CreateDialogBox(_aDialogHistory,GUI_COUNTOF(_aDialogHistory),&_cbCallbackHistory2,hWin,276,170);
                 WM_MakeModal(hDlg4);
                             GUI_ExecCreatedDialog(hDlg4);
                      }
                    if(Id==GUI_ID_EDIT3)
                       {                                                       hDlg4=GUI_CreateDialogBox(_aDialogHistory,GUI_COUNTOF(_aDialogHistory),&_cbCallbackHistory3,hWin,276,170);
                 WM_MakeModal(hDlg4);
                             GUI_ExecCreatedDialog(hDlg4);
                      }            
            }
            break;
        default:
            WM_DefaultProc(pMsg);
    }
}
void MainTask222(void)
{
      WM_HWIN hDlg;
     
      TEXT_SetDefaultFont(&GUI_FontHZ_YouYuan_19);
      EDIT_SetDefaultFont(&GUI_FontHZ_YouYuan_19);
      CHECKBOX_SetDefaultFont(&GUI_FontHZ_YouYuan_19);
      RADIO_SetDefaultFont(&GUI_FontHZ_YouYuan_19);
      hDlg=GUI_CreateDialogBox(_aDialogCreate222, GUI_COUNTOF(_aDialogCreate222), &_cbCallback222, 0, 0, 0);
    WM_CreateTimer(WM_GetClientWindow(hDlg),0,50,0);
    GUI_ExecCreatedDialog(hDlg);
}
求支援
回复

使用道具 举报

8

主题

51

回帖

8

积分

初级会员

一起来学习

积分
8
 楼主| 发表于 2016-3-1 10:15:47 | 显示全部楼层
主要是想做成动态显示EDIT个数的。比如我要显示10条数据,如果我每页显示6条,则最后一页显示四条,那最后两个EDIT得隐藏,目前隐藏的时候会有痕迹。所以想动态创建EDIT个数。如果这一页六条就显示6个EDIT,如果四条就显示4个EDIT。类似这种情况,麻烦问一下
求支援
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2016-3-1 14:43:54 | 显示全部楼层
把这个里面的hWin
  EDIT_CreateEx(275,105+150,326,30,hWin,WM_CF_SHOW,0,GUI_ID_EDIT3,38);
        EDIT_CreateEx(275,105+100,326,30,hWin,WM_CF_SHOW,0,GUI_ID_EDIT2,38);

改成
WM_GetClientWindow( pMsg->hWin) 试试看。
回复

使用道具 举报

8

主题

51

回帖

8

积分

初级会员

一起来学习

积分
8
 楼主| 发表于 2016-3-1 15:11:42 | 显示全部楼层

回 eric2013 的帖子

eric2013:把这个里面的hWin
  EDIT_CreateEx(275,105+150,326,30,hWin,WM_CF_SHOW,0,GUI_ID_EDIT3,38);
        EDIT_CreateEx(275,105+100,326,30,hWin,WM_CF_SHOW,0,GUI_ID_EDIT2,38);

改成
....... (2016-03-01 14:43) 
可以了,是这个返回客户端函数句柄,thankyou[s:143]
求支援
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-16 23:40 , Processed in 0.038924 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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