|
使用STemWin时,我遇到一个问题:
在工程中,我需要用到很多窗口,系统资源是不允许我把所有窗口都预先创建并隐藏的。所以,我在主窗口中,点击按钮时创建另一个窗口,在另一个窗口中完成所需功能后关闭它。
这时候问题出现了,我重复创建、关闭的动作数次后,系统内存耗尽并死机了[s:139]
下面是我的部分代码,请大家帮忙看下,是哪里不对了呢?
/*********************************************************************
*
* _cbDateTimeDialog(消息处理)
*/
//static
void _cbDateTimeDialog(WM_MESSAGE * pMsg) {
WM_HWIN hItem;
int NCode;
int Id;
// USER START (Optionally insert additional variables)
switch (pMsg->MsgId) {
case WM_INIT_DIALOG:
FormatString(m_ucDT, GUI_ALLOC_GetNumFreeBytes(), 0, 4, 0);
hItem = WM_GetDialogItem(pMsg->hWin, ID_DT_MEMORY);
TEXT_SetBkColor(hItem,0x00FF8000);
break;
case WM_NOTIFY_PARENT:
Id = WM_GetId(pMsg->hWinSrc);
NCode = pMsg->Data.v;
switch(Id) {
case ID_DT_BUTTON_CANCLE:
switch(NCode) {
case WM_NOTIFICATION_CLICKED:
break;
case WM_NOTIFICATION_RELEASED:
GUI_EndDialog(hWinDT,0);
break;
}
break;
}
break;
case WM_DELETE:
GUI_ALLOC_Free(pMsg->hWin);
break;
default:
WM_DefaultProc(pMsg);
break;
}
}
/*********************************************************************
*
* 创建窗口
*/
WM_HWIN CreateDTWindow(void) {
hWinDT = GUI_CreateDialogBox(_DTDialogCreate, GUI_COUNTOF(_DTDialogCreate), _cbDateTimeDialog, WM_HBKWIN, 0, 0);
WM_BringToTop(hWinDT);
return hWinDT;
} |
|