非模態對話方塊

2021-04-16 22:04:22 字數 585 閱讀 5054

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

模態對話方塊與非模態對話方塊

1.對話方塊分類 按工作方式不同,可將對話方塊分成兩類 模態對話方塊 modal 在關閉模態對話方塊之前,程式不能進行其他工作 如一般的 開啟檔案 對話方塊 非模態對話方塊 modeless 非模態對話方塊開啟後,程式仍然能夠進行其他工作 如一般的 查詢與替換 對話方塊 2.對話方塊建立 模態對話方...

模態對話方塊和非模態對話方塊

模態對話方塊和非模態對話方塊的區別 在這裡我就說的比較通俗易懂了,就是當你開啟乙個模態對話方塊時,你的焦點不能轉移到程式的其他視窗上,也就是你只能先響應模態對話方塊,才能進行成下面的操作。而非模態對話方塊則相反,你可以不用管它,照常能夠將其他視窗啟用。建立模態對話方塊,主要是應用對話方塊的domod...

模態對話方塊和非模態對話方塊

模態對話方塊 關閉才能返回,非模態 不關閉就能返回 在資源裡新建立二個對話方塊 為新的對話方塊建立乙個類 在最原始的對話方塊函式的標頭檔案將上述兩個新新增的標頭檔案加進去,對模態按鈕進行程式設計 void cdemo11dlg onbnclickedbutton1 對非模態按鈕進行程式設計 void...