非模態(tài)對話框
用MFC可以創(chuàng)建非模態(tài)的對話框,只是創(chuàng)建方式不同,模態(tài)對話框用 dlg.DoModel()調(diào)用,而非模態(tài)對話框要用create函數(shù)創(chuàng)建調(diào)用。 /*假設(shè)IDD_TEST_DLG為已經(jīng)定義的對話框資源的ID號*/
CTestDlg *dlg=new CTestDlg; dlg->Create(IDD_TEST_DLG,NULL); dlg->ShowWindows(SW_SHOW); 在上面的代碼中我們新生成了一個(gè)對話框?qū)ο螅以谕顺龊瘮?shù)時(shí)并沒有銷毀該對象。因?yàn)槿绻藭r(shí)銷毀該對象(對象被銷毀時(shí)窗口同時(shí)被銷毀),而此時(shí)對話框還在顯示就會出現(xiàn)錯(cuò)誤。那么這就提出了一個(gè)問題:什么時(shí)候銷毀該對象。可以用如下方法:
在對話框退出時(shí)銷毀自己:在對話框中重載OnOK與OnCancel在函數(shù)中調(diào)用父類的同名函數(shù),然后調(diào)用DestroyWindow()強(qiáng)制銷毀窗口,在對話框中映射WM_DESTROY消息,在消息處理函數(shù)中調(diào)用delete this;強(qiáng)行刪除自身對象。相關(guān)代碼如下: void CTestDlg1::OnOK() { CDialog::OnOK(); DestroyWindow(); }
void CTestDlg1::OnCancel() { CDialog::OnCancel(); DestroyWindow(); }
void CTestDlg1::OnDestroy() { CDialog::OnDestroy(); delete this; }
|
posted on 2008-03-04 17:27
李陽 閱讀(641)
評論(0) 編輯 收藏 引用 所屬分類:
C++