MFC模態與非模態對話方塊

2021-08-27 08:49:35 字數 829 閱讀 4445

1.1模態對話方塊(model dialog box)

當模態對話方塊顯示時,程式會暫停執行,直到關閉這個模態對話方塊之後,才能執行程式中的其他任務。

1.2非模態對話方塊(modeless dialog box)

當非模態對話方塊顯示時,執行轉而執行程式中的其他任務,而不用關閉這個對話方塊。

2.1模態對話方塊的實現

void cmodelctrdlg::onbnclickedbutton1()

testdialog1是我建立的乙個對話方塊相關的對話方塊類。

cdialog::domodel:該函式的功能就是建立並顯示乙個模態對話方塊。

2.2非模態對話方塊實現

void cmodelctrdlg::onbnclickedbutton2()

上面程式因為dlg指標變數是在堆上儲存的, 且只有程式結束才能釋放, 如果要手動釋放的話要增加額外的**,因此這種寫法不太合適。

2.2.1改進**

首先在主對話方塊建立乙個testdialog2型別成員指標變數:

private:

testdialog2 *dlg;

再在相應的function加上以下**: 

dlg = new testdialog2;

dlg->create(idd_dialog2);//建立乙個非模態對話方塊 idd_dialog2是我建立的一對話方塊id

dlg->showwindow(sw_shownormal);//顯示非模態對話方塊

最後在主對話方塊類析構函式中加入

delete dlg;

MFC模態與非模態對話方塊

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

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

vc 中非模態對話方塊生成與模態有相似之處,主要不同在於模態採用domodal函式生成,而非模態採用create函式 而且非模態對話方塊生存週期較長,一般和父視窗的生存週期相同。到新增類一步,非模態與模態都是相同的.但由於要使用create函式,因為要在生成非模態對話方塊的父視窗中新增對話方塊類的指...

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

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