日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MFC模态、非模态对话框

發(fā)布時間:2024/1/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MFC模态、非模态对话框 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、模態(tài)對話框(model dialog box)

在程序運(yùn)行的過程中,若出現(xiàn)了模態(tài)對話框,那么主窗口將無法發(fā)送消息,直到模態(tài)對話框退出才可以發(fā)送。
點擊模態(tài)對話框中的OK按鈕,模態(tài)對話框會被銷毀。
創(chuàng)建模態(tài)對話框的代碼:

//創(chuàng)建一個模態(tài)對話框 Z_Dialog dlg; dlg.DoModal();

其中Z_Dialog 為和對話框資源相關(guān)聯(lián)的對話框類。
可以創(chuàng)建一個布局模態(tài)對話框類變量,不用擔(dān)心它會隨著所在函數(shù)返回而被銷毀。因為DoModal()函數(shù)的一個功能是,當(dāng)前只能運(yùn)行此模態(tài)對話框,且停止主窗口的運(yùn)行,直到模態(tài)對話框退出,才允許主窗口運(yùn)行。
DoModal()函數(shù)也有顯示對話框的功能,所以也無需調(diào)用其他函數(shù)來顯示對話框。

二、非模態(tài)對話框

在程序運(yùn)行的過程中,若出現(xiàn)了非模態(tài)對話框,主窗口還可以發(fā)送消息。
點擊非模態(tài)對話框中的OK按鈕,非模態(tài)對話框沒有銷毀,只是隱藏了。若想點擊OK按鈕時,非模態(tài)對話框也銷毀,那么Z_Dialog類必須重載其基類CDialog的虛函數(shù)OnOK(),在此函數(shù)里調(diào)用DestroyWindow()來銷毀此對話框。

首先在你所要編寫的類1的頭文件中聲明一個指針變量:

private:Z_Dialog *m_imModalDlg;

然后在類1的CPP文件中要創(chuàng)建對話框的位置添加如下代碼:

//采用成員變量創(chuàng)建一個非模態(tài)對話框 m_imModalDlg= new CTestDialog(); //給指針分配內(nèi)存 m_imModalDlg->Create(IDD_DIALOG); //創(chuàng)建一個非模態(tài)對話框,IDD_DIALOG為要創(chuàng)建的對話框的ID m_imModalDlg->ShowWindow(SW_SHOWNORMAL); //顯示非模態(tài)對話框

最后在類1的析構(gòu)函數(shù)中釋放m_imModalDlg所指向的內(nèi)存:

delete m_imModalDlg;

總結(jié)

以上是生活随笔為你收集整理的MFC模态、非模态对话框的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。