|
基于uCOS-II+STemWin+Flash这个工程,实现两个窗体的切换,切到一定次数就死了,分配给gui的内存越多,切换次数越多,估计是删除窗口后内寸无法释放。部分代码如下
void MainTask1(void) {
WM_HWIN hItem;
CreateWindow();
while(1)
{
GUI_Delay(5);
switch(TZ)
{
case 0x0001:
{
Create_KEY_Window();
TZ=0x0000;
}
break;
case 0x0002:
{
CreateWindow();
TZ=0x0000;
}
break;
}
}
}
WM_HWIN CreateWindow(void) {
WM_HWIN hDlgFrame;
GUI_Init();
GUI_CURSOR_Show();
WM_SetCreateFlags(WM_CF_MEMDEV);
WM_SetCallback(WM_HBKWIN, _cbDialog);
hDlgFrame = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), &_cbDialog, 0, 0, 0);
}
WM_HWIN Create_KEY_Window(void) {
WM_HWIN hDlgFrame;
GUI_Init();
GUI_CURSOR_Show();
WM_SetCreateFlags(WM_CF_MEMDEV);
WM_SetCallback(WM_HBKWIN, _cbDialog_KEY);
hDlgFrame = GUI_CreateDialogBox(_aDialogCreate_KEY, GUI_COUNTOF(_aDialogCreate_KEY), &_cbDialog_KEY, 0, 0, 0);
return hDlgFrame;
}
窗体1回调函数下按键响应
case ID_BUTTON_1: // Notifications sent by 'Button'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// USER START (Optionally insert code for reacting on notification message)
// USER END
{
WM_DeleteWindow(pMsg->hWin);
//Create_KEY_Window();
TZ=0x0001;
}
break;
窗体2回调函数下按键响应
case ID_BUTTON_11: // Notifications sent by 'Button'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
{
WM_DeleteWindow(pMsg->hWin);
TZ=0x0002;
}
// USER START (Optionally insert code for reacting on notification message)
// USER END
break; |
|