硬汉嵌入式论坛

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

[emWin] 求助,用EMWIN创建多个对话框时卡死了

[复制链接]

16

主题

16

回帖

16

积分

新手上路

积分
16
发表于 2015-4-22 12:14:12 | 显示全部楼层 |阅读模式
    我想实现的功能是一点EDIT控件就弹出一个键盘,之前版主已经帮我解决了两个问题了,但是问题又来了,实在没办法,只好厚颜无耻的又跑来这里问问题了[s:126],现在的问题是我在点下EDIT后创建了第二个对话框,但是我在对话框里创建了4个按键和一个EDIT,但是对话框一弹出来他就卡死了,我把按键修改成3个时他就不会卡死,程序如下:

/*********************************************************************
*                                                                    *
*                SEGGER Microcontroller GmbH & Co. KG                *
*        Solutions for real time microcontroller applications        *
*                                                                    *
**********************************************************************
*                                                                    *
* C-file generated by:                                               *
*                                                                    *
*        GUI_Builder for emWin version 5.22                          *
*        Compiled Jul  4 2013, 15:16:01                              *
*        (c) 2013 Segger Microcontroller GmbH & Co. KG               *
*                                                                    *
**********************************************************************
*                                                                    *
*        Internet: www.segger.com  Support: support@segger.com       *
*                                                                    *
**********************************************************************
*/

// USER START (Optionally insert additional includes)
// USER END

#include "DIALOG.h"

/*********************************************************************
*
*       Defines
*
**********************************************************************
*/

#define ID_WINDOW_0     (GUI_ID_USER + 0x00)
#define ID_EDIT_0     (GUI_ID_USER + 0x01)
#define ID_BUTTON_0     (GUI_ID_USER + 0x02)
#define ID_FRAMEWIN_0     (GUI_ID_USER + 0x03)
#define ID_BUTTON_1     (GUI_ID_USER + 0x04)
#define ID_BUTTON_2     (GUI_ID_USER + 0x05)
#define ID_BUTTON_3     (GUI_ID_USER + 0x06)
#define ID_BUTTON_4     (GUI_ID_USER + 0x07)
//WM_HWIN hWin;
// USER START (Optionally insert additional defines)
// USER END

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/

// USER START (Optionally insert additional static data)
// USER END

/*********************************************************************
*
*       _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 24, 0, 271, 479, 0, 0x0, 0 },
  { EDIT_CreateIndirect, "Edit", GUI_ID_EDIT0, 74, 67, 80, 20, 0, 0, 0 },
  { BUTTON_CreateIndirect, "SET", ID_BUTTON_0, 75, 125, 80, 20, 0, 0x0, 0 },
  // USER START (Optionally insert additional widgets)
  // USER END
};
static const GUI_WIDGET_CREATE_INFO _aDialogCreate2[] = {
  { FRAMEWIN_CreateIndirect, "408", ID_FRAMEWIN_0, 50, 180, 200, 200, 0, 0x64, 0 },
    { BUTTON_CreateIndirect, "0", ID_BUTTON_1, 20, 60, 43, 20, 0, 0x0, 0 },
    { BUTTON_CreateIndirect, "1", ID_BUTTON_2, 75, 60, 43, 20, 0, 0x0, 0 },
    { BUTTON_CreateIndirect, "2", ID_BUTTON_3, 130, 60, 43, 20, 0, 0x0, 0 },
    { BUTTON_CreateIndirect, "3", GUI_ID_BUTTON0, 20, 95, 43, 20, 0, 0x0, 0 },
    { EDIT_CreateIndirect, "Edit", ID_EDIT_0, 50, 20, 80, 20, 0, 0, 0 },
  // USER START (Optionally insert additional widgets)
  // USER END
};
/*********************************************************************
*
*       Static code
*
**********************************************************************
*/

// USER START (Optionally insert additional static code)
// USER END

/*********************************************************************
*
*       _cbDialog
*/
WM_HWIN hWin2;
static unsigned char i;
static void _cbDialog2(WM_MESSAGE * pMsg) {
//    static WM_HWIN hWin2;
//  WM_HWIN hItem;
//    WM_HWIN hWin2;
  int     NCode;
  int     Id;
//    static unsigned char i;
  // USER START (Optionally insert additional variables)
  // USER END

  switch (pMsg->MsgId) {
  case WM_INIT_DIALOG:
    //
    // Initialization of 'Edit'
    //
//     hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_EDIT0);
//     EDIT_SetText(hItem, "123");
//     // USER START (Optionally insert additional code for further widget initialization)
//     // USER END
//     break;
  case WM_NOTIFY_PARENT:
    Id    = WM_GetId(pMsg->hWinSrc);
    NCode = pMsg->Data.v;
    switch(Id) {
    case ID_BUTTON_1: // Notifications sent by 'Button'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
    //            GUI_EndDialog(hWin2, 0);
//                 i=!i;
//                 if(i)
//                  {
//     //                GUI_EndDialog(hDlg, 0);
//                     hWin2 = CreateWindow2();
//                     
//                 }
//              else
//                      GUI_EndDialog(hWin2, 0);
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    // USER START (Optionally insert additional code for further Ids)
    // USER END
    }
    break;
  // USER START (Optionally insert additional message handling)
  // USER END
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}
//WM_HWIN hDlg;
//WM_HWIN hWin;
// WM_HWIN hWin2;
// static unsigned char i;
static void _cbDialog(WM_MESSAGE * pMsg) {
//    static WM_HWIN hWin2;
  WM_HWIN hItem;
//    WM_HWIN hWin2;
  int     NCode;
  int     Id;
//    static unsigned char i;
  // USER START (Optionally insert additional variables)
  // USER END

  switch (pMsg->MsgId) {
  case WM_INIT_DIALOG:
    //
    // Initialization of 'Edit'
    //
    hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_EDIT0);
    EDIT_SetText(hItem, "123");
    // USER START (Optionally insert additional code for further widget initialization)
    // USER END
    break;
  case WM_NOTIFY_PARENT:
    Id    = WM_GetId(pMsg->hWinSrc);
    NCode = pMsg->Data.v;
    switch(Id) {
    case GUI_ID_EDIT0: // Notifications sent by 'Edit'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
//                hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0);
//                                  i=!i;
//                 if(i)
//                  {
//                     hWin2 = GUI_CreateDialogBox(_aDialogCreate2, GUI_COUNTOF(_aDialogCreate2),_cbDialog2,0, 0, 0);
//                 }
//              else
//                      GUI_EndDialog(hWin2, 0);
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
                i=!i;
                if(i)
                 {
                    hWin2 = GUI_CreateDialogBox(_aDialogCreate2, GUI_COUNTOF(_aDialogCreate2),_cbDialog2,0, 0, 0);
                }
//              else
//                      GUI_EndDialog(hWin2, 0);
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_VALUE_CHANGED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    case ID_BUTTON_0: // Notifications sent by 'Button'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
//                GUI_EndDialog(hWin2, 0);
                i=!i;
                if(!i)
                 {
    //                GUI_EndDialog(hDlg, 0);
    //                hWin2 = CreateWindow2();
                    GUI_EndDialog(hWin2, 0);
                }
//            else
     //                GUI_EndDialog(hWin2, 0);
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    // USER START (Optionally insert additional code for further Ids)
    // USER END
    }
    break;
  // USER START (Optionally insert additional message handling)
  // USER END
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       CreateWindow
*/
WM_HWIN CreateWindow(void);
WM_HWIN CreateWindow(void) {
  WM_HWIN hWin;

  hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
  return hWin;
}


/*************************** End of file ****************************/
还望有人还能帮我看一下,感激不尽!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107642
QQ
发表于 2015-4-22 13:43:29 | 显示全部楼层
这次你终于不再那么爱用局部变量,晚上如果有时间了我再给你测试下,最晚明天给你测试。
回复

使用道具 举报

16

主题

16

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2015-4-23 12:13:16 | 显示全部楼层

回 eric2013 的帖子

eric2013:这次你终于不再那么爱用局部变量,晚上如果有时间了我再给你测试下,最晚明天给你测试。
 (2015-04-22 13:43) 
谢谢版主,我有点怀疑是不是内存部够的问题
回复

使用道具 举报

16

主题

16

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2015-4-23 16:57:07 | 显示全部楼层

回 eric2013 的帖子

eric2013:这次你终于不再那么爱用局部变量,晚上如果有时间了我再给你测试下,最晚明天给你测试。
 (2015-04-22 13:43) 
版主,有空了吗?[s:126][s:126]
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107642
QQ
发表于 2015-4-23 17:24:52 | 显示全部楼层

回 益力多3号 的帖子

益力多3号:版主,有空了吗?[s:126][s:126] (2015-04-23 16:57) 
不好意思啊,兄弟,今天比较苦逼,售后群等杂七杂八的事情比较多,晚上要是有空了一定给你看看
回复

使用道具 举报

16

主题

16

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2015-4-23 18:55:55 | 显示全部楼层

回 eric2013 的帖子

eric2013:不好意思啊,兄弟,今天比较苦逼,售后群等杂七杂八的事情比较多,晚上要是有空了一定给你看看 (2015-04-23 17:24) 
好的,辛苦了,谢谢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107642
QQ
发表于 2015-4-24 21:13:28 | 显示全部楼层
我在模拟器上面测试了。没有卡死。你是在什么上面测试的。
回复

使用道具 举报

16

主题

16

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2015-4-25 09:38:29 | 显示全部楼层

回 eric2013 的帖子

eric2013:我在模拟器上面测试了。没有卡死。你是在什么上面测试的。 (2015-04-24 21:13) 
我是在STM32F103上用的,之前那个问题已经解决了,我把EDIT的创建顺序放在按键之前他就行了,就不会卡死了,我也不知道为什么,不过现在问题又来了,我想在已经创建好的第二个对话框里面显示EDIT的值,但是一创建就卡死了,如果不给EDIT赋值它是不会卡死的,部知道为什么,程序如下:
/*********************************************************************
*                                                                    *
*                SEGGER Microcontroller GmbH & Co. KG                *
*        Solutions for real time microcontroller applications        *
*                                                                    *
**********************************************************************
*                                                                    *
* C-file generated by:                                               *
*                                                                    *
*        GUI_Builder for emWin version 5.22                          *
*        Compiled Jul  4 2013, 15:16:01                              *
*        (c) 2013 Segger Microcontroller GmbH & Co. KG               *
*                                                                    *
**********************************************************************
*                                                                    *
*        Internet: www.segger.com  Support: support@segger.com       *
*                                                                    *
**********************************************************************
*/

// USER START (Optionally insert additional includes)
// USER END

#include "DIALOG.h"

/*********************************************************************
*
*       Defines
*
**********************************************************************
*/

#define ID_WINDOW_0     (GUI_ID_USER + 0x00)
#define ID_EDIT_0     (GUI_ID_USER + 0x01)
#define ID_BUTTON_0     (GUI_ID_USER + 0x02)
#define ID_FRAMEWIN_0     (GUI_ID_USER + 0x03)
#define ID_BUTTON_1     (GUI_ID_USER + 0x04)
#define ID_BUTTON_2     (GUI_ID_USER + 0x05)
#define ID_BUTTON_3     (GUI_ID_USER + 0x06)
#define ID_BUTTON_4     (GUI_ID_USER + 0x07)
#define ID_BUTTON_5     (GUI_ID_USER + 0x08)
#define ID_BUTTON_6     (GUI_ID_USER + 0x09)
#define ID_BUTTON_7     (GUI_ID_USER + 0x10)
#define ID_BUTTON_8     (GUI_ID_USER + 0x11)
#define ID_BUTTON_9     (GUI_ID_USER + 0x12)
//WM_HWIN hWin;
// USER START (Optionally insert additional defines)
// USER END

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/

// USER START (Optionally insert additional static data)
// USER END

/*********************************************************************
*
*       _aDialogCreate
*/
static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = {
  { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 24, 0, 271, 479, 0, 0x0, 0 },
  { EDIT_CreateIndirect, "Edit", GUI_ID_EDIT0, 74, 67, 80, 20, 0, 0, 0 },
  { BUTTON_CreateIndirect, "SET", ID_BUTTON_0, 95, 400, 80, 20, 0, 0x0, 0 },
  // USER START (Optionally insert additional widgets)
  // USER END
};
static const GUI_WIDGET_CREATE_INFO _aDialogCreate2[] = {
  { FRAMEWIN_CreateIndirect, "408", ID_FRAMEWIN_0, 50, 140, 200, 210, 0, 0x64, 0 },
    { EDIT_CreateIndirect, "Edit", GUI_ID_EDIT1, 50, 20, 80, 20, 0, 0, 0 },
    { BUTTON_CreateIndirect, "0", ID_BUTTON_1, 20, 60, 43, 20, 0, 0x0, 0 },
    { BUTTON_CreateIndirect, "1", ID_BUTTON_2, 75, 60, 43, 20, 0, 0x0, 0 },
    { BUTTON_CreateIndirect, "2", ID_BUTTON_3, 130, 60, 43, 20, 0, 0x0, 0 },
    { BUTTON_CreateIndirect, "3", GUI_ID_BUTTON0, 20, 95, 43, 20, 0, 0x0, 0 },
    { BUTTON_CreateIndirect, "4", ID_BUTTON_4, 75, 95, 43, 20, 0, 0x0, 0 },
    { BUTTON_CreateIndirect, "5", ID_BUTTON_5, 130, 95, 43, 20, 0, 0x0, 0 },
    { BUTTON_CreateIndirect, "6", ID_BUTTON_6, 20, 130, 43, 20, 0, 0x0, 0 },
    { BUTTON_CreateIndirect, "7", ID_BUTTON_7, 75, 130, 43, 20, 0, 0x0, 0 },
    { BUTTON_CreateIndirect, "8", ID_BUTTON_8, 130, 130, 43, 20, 0, 0x0, 0 },
    { BUTTON_CreateIndirect, "9", ID_BUTTON_9, 20, 165, 43, 20, 0, 0x0, 0 },
//    { EDIT_CreateIndirect, "Edit", ID_EDIT_0, 50, 20, 80, 20, 0, 0, 0 },
  // USER START (Optionally insert additional widgets)
  // USER END
};
/*********************************************************************
*
*       Static code
*
**********************************************************************
*/

// USER START (Optionally insert additional static code)
// USER END

/*********************************************************************
*
*       _cbDialog
*/
WM_HWIN hWin2;
static unsigned char i;
WM_HWIN hItem2;
static void _cbDialog2(WM_MESSAGE * pMsg) {
//    static WM_HWIN hWin2;
//  WM_HWIN hItem2;
//    WM_HWIN hWin2;
  int     NCode;
  int     Id;
//    static unsigned char i;
  // USER START (Optionally insert additional variables)
  // USER END

  switch (pMsg->MsgId) {
  case WM_INIT_DIALOG:
        hItem2 = WM_GetDialogItem(pMsg->hWin, GUI_ID_EDIT1);
         EDIT_SetDecMode(WM_GetDialogItem(pMsg->hWin, GUI_ID_EDIT1),0,0,1000,0,0);
     EDIT_SetValue(WM_GetDialogItem(pMsg->hWin, GUI_ID_EDIT1),3);
    //
    // Initialization of 'Edit'
    //
//     hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_EDIT0);
//     EDIT_SetText(hItem, "123");
//     // USER START (Optionally insert additional code for further widget initialization)
//     // USER END
     break;
  case WM_NOTIFY_PARENT:
    Id    = WM_GetId(pMsg->hWinSrc);
    NCode = pMsg->Data.v;
    switch(Id) {
    case ID_BUTTON_1: // Notifications sent by 'Button'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
    //            GUI_EndDialog(hWin2, 0);
//                 i=!i;
//                 if(i)
//                  {
//     //                GUI_EndDialog(hDlg, 0);
//                     hWin2 = CreateWindow2();
//                     
//                 }
//              else
//                      GUI_EndDialog(hWin2, 0);
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
//                EDIT_SetValue(WM_GetDialogItem(pMsg->hWin, GUI_ID_EDIT1),3);
//                     i=0;
//                     GUI_EndDialog(hWin2, 0);
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    // USER START (Optionally insert additional code for further Ids)
    // USER END
    }
    break;
  // USER START (Optionally insert additional message handling)
  // USER END
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}
//WM_HWIN hDlg;
//WM_HWIN hWin;
// WM_HWIN hWin2;
// static unsigned char i;
static void _cbDialog(WM_MESSAGE * pMsg) {
//    static WM_HWIN hWin2;
  WM_HWIN hItem;
//    WM_HWIN hWin2;
  int     NCode;
  int     Id;
//    static unsigned char i;
  // USER START (Optionally insert additional variables)
  // USER END

  switch (pMsg->MsgId) {
  case WM_INIT_DIALOG:
    //
    // Initialization of 'Edit'
    //
     hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_EDIT0);
        EDIT_SetDecMode(hItem,0,0,1000,0,0);
    EDIT_SetValue(hItem,0);
    // USER START (Optionally insert additional code for further widget initialization)
    // USER END
    break;
  case WM_NOTIFY_PARENT:
    Id    = WM_GetId(pMsg->hWinSrc);
    NCode = pMsg->Data.v;
    switch(Id) {
    case GUI_ID_EDIT0: // Notifications sent by 'Edit'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
//                hItem = WM_GetDialogItem(pMsg->hWin, ID_EDIT_0);
//                                  i=!i;
//                 if(i)
//                  {
//                     hWin2 = GUI_CreateDialogBox(_aDialogCreate2, GUI_COUNTOF(_aDialogCreate2),_cbDialog2,0, 0, 0);
//                 }
//              else
//                      GUI_EndDialog(hWin2, 0);
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
//                i=!i;
                if(!i)
                 {
                    i=1;
                    hWin2 = GUI_CreateDialogBox(_aDialogCreate2, GUI_COUNTOF(_aDialogCreate2),_cbDialog2,0, 0, 0);
                }
//              else
//                      GUI_EndDialog(hWin2, 0);
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_VALUE_CHANGED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    case ID_BUTTON_0: // Notifications sent by 'Button'
      switch(NCode) {
      case WM_NOTIFICATION_CLICKED:
//                GUI_EndDialog(hWin2, 0);
    //            i=!i;
                if(i)
                 {
    //                GUI_EndDialog(hDlg, 0);
    //                hWin2 = CreateWindow2();
                    i=0;
                    GUI_EndDialog(hWin2, 0);
                }
//            else
     //                GUI_EndDialog(hWin2, 0);
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      case WM_NOTIFICATION_RELEASED:
        // USER START (Optionally insert code for reacting on notification message)
        // USER END
        break;
      // USER START (Optionally insert additional code for further notification handling)
      // USER END
      }
      break;
    // USER START (Optionally insert additional code for further Ids)
    // USER END
    }
    break;
  // USER START (Optionally insert additional message handling)
  // USER END
  default:
    WM_DefaultProc(pMsg);
    break;
  }
}

/*********************************************************************
*
*       Public code
*
**********************************************************************
*/
/*********************************************************************
*
*       CreateWindow
*/
WM_HWIN CreateWindow(void);
WM_HWIN CreateWindow(void) {
  WM_HWIN hWin;

  hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0);
  return hWin;
}


/*************************** End of file ****************************/
如果把 _cbDialog2中的
hItem2 = WM_GetDialogItem(pMsg->hWin, GUI_ID_EDIT1);
         EDIT_SetDecMode(WM_GetDialogItem(pMsg->hWin, GUI_ID_EDIT1),0,0,1000,0,0);
     EDIT_SetValue(WM_GetDialogItem(pMsg->hWin, GUI_ID_EDIT1),3);
这几句屏蔽掉就不会卡死的,版主能帮我看一下吗?
回复

使用道具 举报

16

主题

16

回帖

16

积分

新手上路

积分
16
 楼主| 发表于 2015-4-25 11:02:02 | 显示全部楼层

回 eric2013 的帖子

eric2013:我在模拟器上面测试了。没有卡死。你是在什么上面测试的。 (2015-04-24 21:13) 
我七楼的问题也解决了,谢谢版主了,EMWIN的坑不是一般的多啊,我想问一下版主可不可以用EDIT_SetValue函数来显示一个变量的值的?主要是我这么做的时候又卡死了。。。
回复

使用道具 举报

0

主题

1

回帖

1

积分

新手上路

积分
1
发表于 2017-10-27 11:19:08 | 显示全部楼层
楼主怎么解决额呢
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107642
QQ
发表于 2017-10-28 01:23:12 | 显示全部楼层

回 zb835835 的帖子

zb835835:楼主怎么解决额呢 (2017-10-27 11:19) 
多窗口或者对话框的使用,可以学习下我新版emWin教程的第64章节:http://www.armbbs.cn/forum.php?mod=viewthread&tid=19834
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-9 18:09 , Processed in 0.245891 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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