2013-02-23 79 views
1

我想製作應用程序,一次只能看到一個窗口,以節省內存。比方說,我們有一個窗口,在按下另一個窗口顯示的按鈕後,將刪除前一個窗口。如果在窗口回調函數中處理按鈕按鈕,從窗口函數內部刪除窗口並在新窗口關閉後重新創建窗口是安全的?類似的東西:從回調窗口功能(Windows OS)中刪除窗口可以嗎?

void callback(...) { 
... 
if (msgID == ENTER_KEY) { 
    deleteMyself(); 
    showWindow2(); 
    createMyself(); 
} 
... 
} 

如果這個不好,你能建議更好的方法嗎?

回答

1

我認爲這通常是在桌面上一個壞主意。所以你會失去用戶輸入的一切。根據您的應用程序,用戶可能會迷惑爲什麼選項對話框會關閉主窗口。

但是在移動設備上,只有一個窗口是正常的(除非使用對話框)。但是在這些情況下,所有的輸入都應該被存儲起來,以便窗口可以重新恢復到原來的狀態。

一般來說,如果您在內存管理方面遇到問題,最好檢查一下在大多數情況下是否泄漏內存,GUI不需要太多內存。

+0

我害怕的是上面的方法會導致異常,因爲其餘代碼(或OS代碼)指向被刪除的舊窗口? – maximus 2013-02-23 07:11:04

+0

這取決於你的代碼。如果您正確添加所有處理程序並在不需要時刪除它們,則不應該有任何問題。你上面的代碼看起來像C++,但我不確定這是否是本機WinAPI或MFC或其他GUI工具包。所以我不能說你應該關心什麼。 – rekire 2013-02-23 07:13:32