|
现在遇到一个问题:在使用多页贴图后,每进入退出一次,SDRAM使用量多出200多个字节,不会释放;如果屏蔽了代码中红色部分,SDRAM第一次调用后,不再增加。如果贴图不知如何释放每次多出来的SDRAM开销?
也使用过MULTIPAGE_SetBitmap()函数,效果一样,不释放。
代码如下:
页面创建:
WM_HWIN CreateSETTING(WM_HWIN hMWIN)
{
hSWin = GUI_CreateDialogBox(_aDialogCreate1, GUI_COUNTOF(_aDialogCreate1), _cbDialog, hMWIN, 0, 0);
return hSWin;
}
页面回调函数:
static void _cbDialog(WM_MESSAGE * pMsg) {
WM_HWIN hItem;
WM_HWIN hMultiPage;
WM_HWIN hDialog;
int NCode;
int Id;
// USER START (Optionally insert additional variables)
// USER END
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
//
// Initialization of 'SETTING(define)'
//
hItem = pMsg->hWin;
FRAMEWIN_SetTitleVis(hItem, 0);
//
// Initialization of 'Header'
//
hItem = WM_GetDialogItem(pMsg->hWin, ID_HEADER_0);
HEADER_SetTextColor(hItem,GUI_WHITE);
HEADER_SetBkColor(hItem,0x00a57001);
HEADER_SetFont(hItem,GUI_FONT_32B_ASCII);//GUI_FONT_24B_ASCII
HEADER_AddItem(hItem, 710, " ", GUI_TA_HCENTER|GUI_TA_VCENTER);
HEADER_SetHeight(hItem,60);
HEADER_SetItemText(hItem,0,"Quick Settings");
hItem = WM_GetDialogItem(pMsg->hWin, ID_BUTTON_0);
BUTTON_SetBitmapEx(hItem,0,&bmreturn,1,1);
BUTTON_SetBitmapEx(hItem,1,&bmreturn,1,1);
BUTTON_SetBitmapEx(hItem,2,&bmreturn,1,1);
BUTTON_SetFocussable(hItem,1);
//
// Initialization of 'Multipage'
//
hMultiPage = WM_GetDialogItem(pMsg->hWin, ID_MULTIPAGE_0);
MULTIPAGE_SetTabHeight(hMultiPage, 90);
MULTIPAGE_SetAlign(hMultiPage,MULTIPAGE_ALIGN_LEFT | MULTIPAGE_ALIGN_BOTTOM);
MULTIPAGE_SetRotation(hMultiPage,MULTIPAGE_CF_ROTATE_CW);
MULTIPAGE_SetFont(hMultiPage, GUI_FONT_24B_1);
MULTIPAGE_EnableScrollbar(hMultiPage,0);
hDialog = GUI_CreateDialogBox(_aQTSettingCreate,GUI_COUNTOF(_aQTSettingCreate),_cbQTSettingDialog,hSWin,0,0); //WM_UNATTACHED
MULTIPAGE_AddPage(hMultiPage,hDialog,"");
MULTIPAGE_SetTabWidth(hMultiPage, 208,0);
MULTIPAGE_SetBitmapEx(hMultiPage,&bm21,0,0,0,MULTIPAGE_BI_SELECTED);
MULTIPAGE_SetBitmapEx(hMultiPage,&bm22,0,0,0,MULTIPAGE_BI_UNSELECTED);
hDialog = GUI_CreateDialogBox(_aUVSettingCreate,GUI_COUNTOF(_aUVSettingCreate),_cbUVSettingDialog,hSWin ,0,0); //WM_UNATTACHED
MULTIPAGE_AddPage(hMultiPage,hDialog, "");
MULTIPAGE_SetTabWidth(hMultiPage, 208,1);
MULTIPAGE_SetBitmapEx(hMultiPage,&bm24,0,0,1,MULTIPAGE_BI_SELECTED);
MULTIPAGE_SetBitmapEx(hMultiPage,&bm23,0,0,1,MULTIPAGE_BI_UNSELECTED);
MULTIPAGE_SelectPage(hMultiPage,0);
// USER START (Optionally insert additional code for further widget initialization)
// USER END
break;
case WM_DELETE:
hDialog = NULL;
hMultiPage = NULL;
hSWin = NULL;
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id) {
case ID_BUTTON_0: // Notifications sent by 'RETURN'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// 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)
GUI_EndDialog(pMsg->hWin,0);
GUI_Delay(10);
hItem = WM_GetActiveWindow();
WM_EnableWindow(hItem);
WM_SetFocus(hItem);
// USER END
break;
// USER START (Optionally insert additional code for further notification handling)
// USER END
}
break;
case ID_HEADER_0: // Notifications sent by 'Header'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// 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;
case WM_NOTIFICATION_MOVED_OUT:
// 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_MULTIPAGE_0: // Notifications sent by 'Multipage'
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
// 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;
case WM_NOTIFICATION_MOVED_OUT:
// 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;
// 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;
}
} |
|