|

楼主 |
发表于 2018-3-29 09:39:00
|
显示全部楼层
本帖最后由 Zoe. 于 2018-3-29 09:43 编辑
我现在不调用我有graph的界面了,用第一个界面的button直接调用ATM的第11个界面,这两个界面不断切换,然后内存还是不断减少啊。这是为啥啊,你看看这第一个界面的回调函数写的:
/*
*********************************************************************************************************
* 函 数 名: _cbLanguage
* 功能说明: 第一个界面,用于中文和英语的选择
* 形 参:pMsg 参数指针
* 返 回 值: 无
回调例程被调用的时候会收到以其pMsg参数指定的消息
*********************************************************************************************************
*/
static void _cbLanguage(WM_MESSAGE* pMsg)
{
WM_HWIN hWin = pMsg->hWin;
switch (pMsg->MsgId)
{
case WM_CREATE:
/* 设置聚焦 */
WM_SetFocus(hWin);
/*创建四个按钮*/
_CreateButton(hWin, "风机", GUI_ID_BUTTON0, 10, 340, 100, 50, 0);
_CreateButton(hWin, "水泵", GUI_ID_BUTTON1, 130, 340, 100, 50, 0);
_CreateButton(hWin, "锅炉", GUI_ID_BUTTON2, 250, 340, 100, 50, 0);
_CreateButton(hWin, "照明", GUI_ID_BUTTON3, 370, 340, 100, 50, 0);
hdlg0=CreateFramewin0(); //在窗口上新建的对话框0
hdlg1=CreateFramewin1(); //在窗口上新建的对话框1
hdlg2=CreateFramewin2(); //在窗口上新建的对话框2
break;
case WM_KEY:
switch (((WM_KEY_INFO*)(pMsg->Data.p))->Key)
{
case GUI_KEY_ESCAPE:
GUI_EndDialog(hWin, 1);
break;
case GUI_KEY_RIGHT:
WM_SetFocusOnNextChild(hWin);
break;
case GUI_KEY_LEFT:
WM_SetFocusOnPrevChild(hWin);
break;
}
break;
case WM_PAINT:
_PaintFrame(); //背景窗口
//在窗口顶部显示
_hTitle = TEXT_CreateEx(0, 0, LCD_GetXSize(), 32, WM_HBKWIN, WM_CF_SHOW, 0, GUI_ID_TEXT0, _GetLang(19));
TEXT_SetTextAlign(_hTitle, GUI_TA_HCENTER);
TEXT_SetFont(_hTitle, MAIN_FONT);
break;
case WM_NOTIFY_PARENT: //告知父窗口
if (pMsg->Data.v == WM_NOTIFICATION_RELEASED)
{
int Id = WM_GetId(pMsg->hWinSrc);
switch (Id)
{
case GUI_ID_BUTTON0: //如果按下了button0 则关闭三个对话框,再删除窗口
GUI_EndDialog(hdlg0,1); //删除对话框0
GUI_EndDialog(hdlg1,1);//删除对话框1
GUI_EndDialog(hdlg2,1); //删除对话框2
_DeleteFrame();
mem_num=GUI_ALLOC_GetNumFreeBytes(); //获取剩余内存
printf("neicun2=%u\r\n",mem_num); //打印此时内存数 neicun2
_CreateFrame(&_cbThanks); //第一个界面按下按钮后,直接创建第11个界面,然后第1个界面和第11个界面不断切换
mem_num=GUI_ALLOC_GetNumFreeBytes();//获取剩余内存
printf("neicun3=%u\r\n",mem_num);//打印此时内存数 neicun3
_Language = 0;
break;
case GUI_ID_BUTTON1: //否则是英文
_Language = 1;
break;
}
}
break;
default:
WM_DefaultProc(pMsg);
}
} |
|