Good morning,
I'm using emWin library ver.5.32 on STM32F746 and it works very well.
Now I'm trying to use the new SWIPELIST function but when I go back to the previous menu (ie destroing the page) the system crash with a MEMFAULT.
Could You explain me the correct sequence to destroy the swipelist?
Here attached my code.
Thank a lot in advance!
Simone
Display All
I'm using emWin library ver.5.32 on STM32F746 and it works very well.
Now I'm trying to use the new SWIPELIST function but when I go back to the previous menu (ie destroing the page) the system crash with a MEMFAULT.
Could You explain me the correct sequence to destroy the swipelist?
Here attached my code.
Thank a lot in advance!
Simone
Brainfuck Source Code
- /* Includes ------------------------------------------------------------------*/#include "gui_main.h"#include "BUTTON.h"#include "win.h"#include "main.h"
- /*********************************************************************** Defines************************************************************************/#define ID_WINDOW_0 (GUI_ID_USER + 0x00)#define ID_BUTTON_0 (GUI_ID_USER + 0x01)
- #define GUI_ID_SPINBOX_BACKLIGHT (GUI_ID_USER + 0x40)
- /*********************************************************************** _aDialogCreate*/static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = { { WINDOW_CreateIndirect, "AdminMain", ID_WINDOW_0, 0, 0, 800, 400, 0, 0x0, 0 }, { BUTTON_CreateIndirect, "", ID_BUTTON_0, 680, 15, 70, 70, 0, 0x0, 0 }, //"BtnBack"// { SWIPELIST_CreateIndirect, "Swipe1", GUI_ID_SWIPELIST0, 100, 90, 540, 300, 0 },};
- #define SWIPE0_ITEMS 7 // Number of available items#define SWIPE0_SEPARATORS 1
- static const char * paItemText[SWIPE0_SEPARATORS][SWIPE0_ITEMS] = { { "Language", "Backlight", "Stand-by", "Sound", "Voice", "Board code", "Other", },};//// Information about the separators//static const char * paSeperatorText[] = { "General",};
- WM_HMEM hSwipelist;
- /*********************************************************************** _cbDialog*/static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; //WM_HMEM hSwipelist; uint16_t i,j; int Id, NCode;
- switch (pMsg->MsgId) { case WM_INIT_DIALOG: hItem = pMsg->hWin; WINDOW_SetBkColor(hItem, GUI_TRANSPARENT);
- WM_MOTION_Enable(1);
- //hSwipelist = WM_GetDialogItem(pMsg->hWin, GUI_ID_SWIPELIST0); hSwipelist = SWIPELIST_CreateAsChild(120, 100, 540, 300, pMsg->hWin, GUI_ID_SWIPELIST0, WM_CF_SHOW); SWIPELIST_SetDefaultBkColor(SWIPELIST_CI_BK_SEP_ITEM, GUI_DARKGRAY); SWIPELIST_SetBkColor(hSwipelist, SWIPELIST_CI_BK_ITEM_UNSEL, GUI_SWIPECOLOR); SWIPELIST_SetTextColor(hSwipelist, SWIPELIST_CI_BK_ITEM_UNSEL, GUI_BLACK);
- SWIPELIST_SetBorderSize(hSwipelist, SWIPELIST_BI_BOTTOM, 1); SWIPELIST_SetBorderSize(hSwipelist, SWIPELIST_BI_LEFT, 1); SWIPELIST_SetBorderSize(hSwipelist, SWIPELIST_BI_RIGHT, 1); SWIPELIST_SetBorderSize(hSwipelist, SWIPELIST_BI_TOP, 1); SWIPELIST_SetBkColor(hSwipelist, SWIPELIST_CI_BK_ITEM_SEL, GUI_SWIPECOLOR); SWIPELIST_SetTextColor(hSwipelist, SWIPELIST_CI_BK_ITEM_SEL, GUI_BLACK);
- for (j = 0; j < SWIPE0_SEPARATORS; j++) { SWIPELIST_AddSepItem(hSwipelist, paSeperatorText[j], 30); for (i = 0; i < SWIPE0_ITEMS; i++) { SWIPELIST_AddItem(hSwipelist, paItemText[j][i], 50); SWIPELIST_SetFont(hSwipelist, 1+i,GUI_FONT_20_1); } } //hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_SPINBOX_BACKLIGHT); hItem = SPINBOX_CreateEx(0, 0, 100, 40, WM_HBKWIN, WM_CF_SHOW, GUI_ID_SPINBOX_BACKLIGHT, 1, 100); SPINBOX_SetFont(hItem, GUI_FONT_20_1); SPINBOX_SetValue(hItem, set.v.bklight); SWIPELIST_ItemAttachWindow(hSwipelist, 2, hItem, 435, 5);
- WM_MOTION_SetMoveable(hSwipelist, WM_CF_MOTION_Y, 1);
- // // Initialization of 'BtnBack' // hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0); BUTTON_SetText(hItem, "Back"); break; case WM_NOTIFY_PARENT: Id = WM_GetId(pMsg->hWinSrc); NCode = pMsg->Data.v; switch(Id) { case ID_BUTTON_0: // Notifications sent by 'BtnBack' switch(NCode) { case WM_NOTIFICATION_CLICKED: // USER START (Optionally insert code for reacting on notification message) // USER END break; case WM_NOTIFICATION_RELEASED: WM_MOTION_Enable(0); hItem = WM_GetDialogItem(pMsg->hWin, GUI_ID_SPINBOX_BACKLIGHT); SWIPELIST_ItemDetachWindow(hSwipelist, hItem); for(i=0;i<(SWIPE0_SEPARATORS+SWIPE0_ITEMS);i++) SWIPELIST_DeleteItem(hSwipelist, i); WM_DeleteWindow(pMsg->hWin); currWin = CreateAdminMain(); break; } break; } break;
- default: WM_DefaultProc(pMsg); break; }}
- /*********************************************************************** Public code************************************************************************//*********************************************************************** CreateAdminParam*/WM_HWIN CreateAdminParam(void);WM_HWIN CreateAdminParam(void) { WM_HWIN hWin;
- GUI_SelectLayer(1); GUI_SetBkColor(GUI_TRANSPARENT); hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0); return hWin;}