a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

MFC創(chuàng)建模態(tài)對話框和非模態(tài)對話框的方法

2020-01-26 15:27:31
字體:
供稿:網(wǎng)友

在MFC中對話框有兩種形式,一個是模態(tài)對話框(model dialog box),一個是非模態(tài)對話框(modeless dialog box)。本文對此分別簡述其創(chuàng)建方法。

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

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

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

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

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

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

此處采用和上面一樣的方式來創(chuàng)建一個非模態(tài)對話框,代碼如下:

CTestDialog td;td.Create(IDD_DIALOG1); //創(chuàng)建一個非模態(tài)對話框td.ShowWindow(SW_SHOWNORMAL); //顯示非模態(tài)對話框

那么,在運行時,你會發(fā)現(xiàn)此對話框無法顯示。這是因為你聲明的對話框變量td是局部變量,但這個函數(shù)返回時,td也被析構了,所以無法顯示此對話框。

創(chuàng)建非模態(tài)對話框,必須聲明一個指向CTestDialog類的指針變量,且需要顯示的調(diào)用ShowWindow()才能將對話框顯示出來。有兩種創(chuàng)建方法:

(1)采用局部變量創(chuàng)建一個非模態(tài)對話框

//采用局部變量創(chuàng)建一個非模態(tài)對話框CTestDialog *pTD = new CTestDialog();pTD->Create(IDD_DIALOG1); //創(chuàng)建一個非模態(tài)對話框pTD->ShowWindow(SW_SHOWNORMAL); //顯示非模態(tài)對話框

因為指針在聲明的時候是被放在堆棧中,只有整個應用程序關閉后才會被銷毀,所以可以正常顯示對話框。
這種方法雖然不影響程序的運行,可是指針pTD所指向的內(nèi)存卻導致不可用,這樣的編程很不好。

(2)采用成員變量創(chuàng)建一個非模態(tài)對話框
首先在你所要編寫的類的頭文件中聲明一個指針變量:

private:CTestDialog *pTD;

然后再在相應的CPP文件,在你要創(chuàng)建對話框的位置添加如下代碼:

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

最后在所在類的析構函數(shù)中收回pTD所指向的內(nèi)存:

delete pTD;
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 在线色网 | 国产精品精品视频一区二区三区 | 亚洲高清视频在线观看 | 国产1区在线观看 | 亚洲欧美一区二区三区在线 | 亚洲国产成人av好男人在线观看 | 亚洲激情在线 | 91精品在线观看入口 | 国产精品不卡 | 午夜影院免费观看视频 | 欧美精品xx | 久久精品导航 | 亚洲码欧美码一区二区三区 | 久草福利在线视频 | 黄色大片网站在线观看 | 亚洲成人伊人 | 国99久9在线视频播放免费 | 欧美成人精品一区二区 | 欧美亚洲高清 | 国产精品久久久久久久久久久久冷 | 青草免费视频 | 欧美性www| 亚洲欧美第一页 | 国产免费网址 | 国产精品毛片无码 | 黄久久久 | 国产精品自产拍在线观看桃花 | 一区二区三区亚洲 | 国产精品久久久久久亚洲毛片 | vagaa欧洲色爽免影院 | 中文字幕国产 | 网址你懂的 | 国产精品久久久久久久一区探花 | 久久精品视频一区二区 | 亚洲综合在线一区 | 国产精品揄拍一区二区久久国内亚洲精 | 国产视频福利在线观看 | 国产成人黄色 | 亚洲网站久久 | 黑人精品xxx一区一二区 | 久久久精彩视频 |