最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2014年07月22日 10:19:36   投稿:shichen2014  
這篇文章主要介紹了MFC創(chuàng)建模態(tài)對(duì)話框和非模態(tài)對(duì)話框的方法,需要的朋友可以參考下

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

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

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

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

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

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

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

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

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

那么,在運(yùn)行時(shí),你會(huì)發(fā)現(xiàn)此對(duì)話框無(wú)法顯示。這是因?yàn)槟懵暶鞯膶?duì)話框變量td是局部變量,但這個(gè)函數(shù)返回時(shí),td也被析構(gòu)了,所以無(wú)法顯示此對(duì)話框。

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

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

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

因?yàn)橹羔樤诼暶鞯臅r(shí)候是被放在堆棧中,只有整個(gè)應(yīng)用程序關(guān)閉后才會(huì)被銷毀,所以可以正常顯示對(duì)話框。
這種方法雖然不影響程序的運(yùn)行,可是指針pTD所指向的內(nèi)存卻導(dǎo)致不可用,這樣的編程很不好。

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

private:
CTestDialog *pTD;

然后再在相應(yīng)的CPP文件,在你要?jiǎng)?chuàng)建對(duì)話框的位置添加如下代碼:

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

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

delete pTD;

相關(guān)文章

  • c++ bitset詳解

    c++ bitset詳解

    這篇文章主要介紹了C++ bitset用法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-08-08
  • C++中的多態(tài)問(wèn)題—理解虛函數(shù)表及多態(tài)實(shí)現(xiàn)原理

    C++中的多態(tài)問(wèn)題—理解虛函數(shù)表及多態(tài)實(shí)現(xiàn)原理

    這篇文章主要介紹了C++中的多態(tài)問(wèn)題—理解虛函數(shù)表及多態(tài)實(shí)現(xiàn)原理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 在Visual Studio Code中配置C++編譯環(huán)境的問(wèn)題

    在Visual Studio Code中配置C++編譯環(huán)境的問(wèn)題

    關(guān)于Visual Studio Code對(duì)C++環(huán)境的配置方法應(yīng)該有好多種,我這里用到了其中的兩種,具體內(nèi)容詳情文中給大家詳細(xì)介紹,對(duì)Visual Studio Code配置C++編譯環(huán)境相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-07-07
  • Qt實(shí)現(xiàn)手動(dòng)切換多種布局的完美方案

    Qt實(shí)現(xiàn)手動(dòng)切換多種布局的完美方案

    通過(guò)點(diǎn)擊程序界面上不同的布局按鈕,使主工作區(qū)呈現(xiàn)出不同的頁(yè)面布局,多個(gè)布局之間可以通過(guò)點(diǎn)擊不同布局按鈕切換,支持的最多的窗口為9個(gè),不同布局下窗口數(shù)隨之變化,這篇文章主要介紹了Qt實(shí)現(xiàn)手動(dòng)切換多種布局的完美方案,需要的朋友可以參考下
    2024-07-07
  • 利用ace的ACE_Task等類實(shí)現(xiàn)線程池的方法詳解

    利用ace的ACE_Task等類實(shí)現(xiàn)線程池的方法詳解

    本篇文章是對(duì)利用ace的ACE_Task等類實(shí)現(xiàn)線程池的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 詳解C語(yǔ)言中結(jié)構(gòu)體(struct)的用法

    詳解C語(yǔ)言中結(jié)構(gòu)體(struct)的用法

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言中結(jié)構(gòu)體(struct)的用法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C語(yǔ)言有一定幫助,需要的可以參考一下
    2022-08-08
  • c語(yǔ)言如何實(shí)現(xiàn)兩數(shù)之和

    c語(yǔ)言如何實(shí)現(xiàn)兩數(shù)之和

    這篇文章主要介紹了c語(yǔ)言如何實(shí)現(xiàn)兩數(shù)之和,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C++分析類的對(duì)象作類成員調(diào)用構(gòu)造與析構(gòu)函數(shù)及靜態(tài)成員

    C++分析類的對(duì)象作類成員調(diào)用構(gòu)造與析構(gòu)函數(shù)及靜態(tài)成員

    終于到了對(duì)象的初始化和清理的最后階段了,在這里分享一個(gè)cpp里有多個(gè)類時(shí),一個(gè)類的對(duì)象作為另一個(gè)類成員的時(shí)候構(gòu)造函數(shù)和析構(gòu)函數(shù)調(diào)用的時(shí)機(jī)。還有一個(gè)靜態(tài)成員也是經(jīng)??嫉降狞c(diǎn),在這篇博客將會(huì)詳解其概念并舉出案例鞏固,讓我們開始
    2022-05-05
  • C++ OpenCV實(shí)現(xiàn)圖像去水印功能

    C++ OpenCV實(shí)現(xiàn)圖像去水印功能

    本文將介紹如何使用OpenCV C++ 進(jìn)行簡(jiǎn)單圖像水印去除。我們?cè)诰W(wǎng)上download圖片時(shí),經(jīng)常因?yàn)榘鏅?quán)問(wèn)題有水印。本案例通過(guò)編寫算法進(jìn)行簡(jiǎn)單水印去除。需要的可以參考一下
    2022-01-01
  • C/C++函數(shù)指針深入探究

    C/C++函數(shù)指針深入探究

    函數(shù)指針是一個(gè)指針變量,它可以存儲(chǔ)函數(shù)的地址,然后使用函數(shù)指針,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言進(jìn)階教程之函數(shù)指針的相關(guān)資料,需要的朋友可以參考下
    2022-08-08

最新評(píng)論

新兴县| 台前县| 玛纳斯县| 金乡县| 旬阳县| 英超| 抚顺县| 高青县| 亚东县| 洱源县| 和顺县| 五家渠市| 黔西| 大厂| 苗栗县| 永宁县| 嘉黎县| 得荣县| 汝州市| 峡江县| 晋城| 建水县| 绿春县| 偃师市| 襄垣县| 防城港市| 遂川县| 甘德县| 许昌市| 特克斯县| 佛冈县| 乌拉特前旗| 清水河县| 威宁| 休宁县| 青铜峡市| 泗水县| 清镇市| 延吉市| 平乐县| 阿合奇县|