MFC 非模態對話方塊

2021-09-01 15:46:46 字數 598 閱讀 3949

非模態對話方塊

用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()

void ctestdlg1::oncancel()

void ctestdlg1::ondestroy()

非模態對話方塊 MFC

cvolsetdlg m pvoldlg null m pvoldlg newcvolsetdlg m pvoldlg create idd dlg vol m pvoldlg showwindow sw show 過載oncancel函式 void cxx oncancel todo add yo...

MFC模態與非模態對話方塊

1.1模態對話方塊 model dialog box 當模態對話方塊顯示時,程式會暫停執行,直到關閉這個模態對話方塊之後,才能執行程式中的其他任務。1.2非模態對話方塊 modeless dialog box 當非模態對話方塊顯示時,執行轉而執行程式中的其他任務,而不用關閉這個對話方塊。2.1模態對...

MFC模態與非模態對話方塊

1.1模態對話方塊 model dialog box 當模態對話方塊顯示時,程式會暫停執行,直到關閉這個模態對話方塊之後,才能執行程式中的其他任務。1.2非模態對話方塊 modeless dialog box 當非模態對話方塊顯示時,執行轉而執行程式中的其他任務,而不用關閉這個對話方塊。2.1模態對...