非模態對話框
用MFC可以創建非模態的對話框,只是創建方式不同,模態對話框用 dlg.DoModel()調用,而非模態對話框要用create函數創建調用。 /*假設IDD_TEST_DLG為已經定義的對話框資源的ID號*/
CTestDlg *dlg=new CTestDlg; dlg->Create(IDD_TEST_DLG,NULL); dlg->ShowWindows(SW_SHOW); 在上面的代碼中我們新生成了一個對話框對象,而且在退出函數時并沒有銷毀該對象。因為如果此時銷毀該對象(對象被銷毀時窗口同時被銷毀),而此時對話框還在顯示就會出現錯誤。那么這就提出了一個問題:什么時候銷毀該對象。可以用如下方法:
在對話框退出時銷毀自己:在對話框中重載OnOK與OnCancel在函數中調用父類的同名函數,然后調用DestroyWindow()強制銷毀窗口,在對話框中映射WM_DESTROY消息,在消息處理函數中調用delete this;強行刪除自身對象。相關代碼如下: 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
李陽 閱讀(644)
評論(0) 編輯 收藏 引用 所屬分類:
C++