無模式對話框與有模式對話框不同的是在創建後其他窗口都可以繼續接收用戶輸入,因此無模式對話框有些類似一個彈出窗口。創建無模式對話框需要調用
BOOL CDialog::Create( UINT nIDTemplate, CWnd* pParentWnd = NULL );之後還需要調用
BOOL CDialog::ShowWindow( SW_SHOW);進行顯示,否則無模式對話框將是不可見的。相關代碼如下:
void CYourView::OnOpenDlg(void)
{
/*假設IDD_TEST_DLG為已經定義的對話框資源的ID號*/
CTestDlg *dlg=new CTestDlg;
dlg->Create(IDD_TEST_DLG,NULL);
dlg->ShowWindows(SW_SHOW);
/*不要調用 delete dlg;*/
}
在上面的代碼中我們新生成了一個對話框對象,而且在退出函數時並沒有銷毀該對象。因為如果此時銷毀該對象(對象被銷毀時窗口同時被銷毀),而此時對話框還在顯示就會出現錯誤。那麼這就提出了一個問題:什麼時候銷毀該對象。我時常使用的方法有兩個:
· void CTestDlg1::OnOK()
· {
· CDialog::OnOK();
· DestroyWindow();
· }
·
· void CTestDlg1::OnCancel()
· {
·