您的位置:首页 > 产品设计 > UI/UE

ucgui 界面切换时删掉所有控件和窗体的方法讨论

2014-10-09 21:59 846 查看
为了节省ram,所以很多界面切换的时候需要把之前建立的窗体和控件进行删除,这样就会释放控件所占用的内存。

我这边想到了两个方法,其中一个就是记录所有的窗体句柄,之后调用WM_DeleteWindow这个函数来进行删除操作。这个是比较常用的。比较灵活,可以删除指定的窗体或控件。

我今天介绍的主要是把所有的窗体全部删除,只留下桌面窗体。

根据ucgui的源码我们知道ucgui通过链表来管理窗体,桌面 -窗体1-。。。。---窗体N ,0

这样我们只要从桌面窗体开始依次获取其后面的窗体之后调用删除窗体的函数即可。

WM_HWIN WM__FinNextLink(WM_HWIN hWin)

{

WM_Obj* pWin;

WM_HWIN hNext;

if(hWin)

{

pWin = WM_H2P(hWin);

if(pWin)

{

hNext=pWin->hNextLin;

return hNext;

}

}

return 0;

}

void DeleteAllWind(void)

{

int Next=0;

while((Next=WM__FinNextLink(1))!=0)

{

WM_DeleteWindow(Next);

}

GUI_Clear();

}

每次从桌面窗体开始获取下一个窗体句柄如果不为0就直接删掉、
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐