欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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)行的過程中,若出現(xiàn)了模態(tài)對(duì)話框,那么主窗口將無法發(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ì)話框的功能,所以也無需調(diào)用其他函數(shù)來顯示對(duì)話框。

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

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

此處采用和上面一樣的方式來創(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ì)話框無法顯示。這是因?yàn)槟懵暶鞯膶?duì)話框變量td是局部變量,但這個(gè)函數(shù)返回時(shí),td也被析構(gòu)了,所以無法顯示此對(duì)話框。

創(chuàng)建非模態(tài)對(duì)話框,必須聲明一個(gè)指向CTestDialog類的指針變量,且需要顯示的調(diào)用ShowWindow()才能將對(duì)話框顯示出來。有兩種創(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(); //給指針分配內(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語言實(shí)現(xiàn)輸入一組數(shù)自動(dòng)從大到小排列的實(shí)例代碼

    c語言實(shí)現(xiàn)輸入一組數(shù)自動(dòng)從大到小排列的實(shí)例代碼

    下面小編就為大家?guī)硪黄猚語言實(shí)現(xiàn)輸入一組數(shù)自動(dòng)從大到小排列的實(shí)例代碼。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-09-09
  • 詳解c++中signal信號(hào)攜帶數(shù)據(jù)的接收與發(fā)送

    詳解c++中signal信號(hào)攜帶數(shù)據(jù)的接收與發(fā)送

    這篇文章主要為大家詳細(xì)介紹了c++中signal信號(hào)攜帶數(shù)據(jù)的接收與發(fā)送的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • Qt實(shí)現(xiàn)文本編輯器(一)

    Qt實(shí)現(xiàn)文本編輯器(一)

    在Qt中QMainWindow是一個(gè)為用戶提供主窗口程序的類,包含了:菜單欄、工具欄、錨接部件、狀態(tài)欄以及一個(gè)中部件。本文將利用QMainWindow制作一個(gè)文本編輯器,感興趣的可以試一試
    2022-01-01
  • Opencv學(xué)習(xí)教程之漫水填充算法實(shí)例詳解

    Opencv學(xué)習(xí)教程之漫水填充算法實(shí)例詳解

    這篇文章主要給大家介紹了Opencv學(xué)習(xí)教程之漫水填充算法的相關(guān)資料,文中給出了詳細(xì)的示例代碼供大家參考學(xué)習(xí),對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2017-06-06
  • C++實(shí)現(xiàn)LeetCode(199.二叉樹的右側(cè)視圖)

    C++實(shí)現(xiàn)LeetCode(199.二叉樹的右側(cè)視圖)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(199.二叉樹的右側(cè)視圖),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C語言全面細(xì)致精講操作符的使用

    C語言全面細(xì)致精講操作符的使用

    C?語言提供了豐富的操作符,有:算術(shù)操作符,移位操作符,位操作符,賦值操作符,單目操作符,關(guān)系操作符,邏輯操作符,條件操作符等。接下了讓我們?cè)敿?xì)了解掌握它
    2022-05-05
  • C語言入門之基礎(chǔ)知識(shí)詳解

    C語言入門之基礎(chǔ)知識(shí)詳解

    這篇文章主要介紹了C語言入門之基礎(chǔ)知識(shí)詳解,文中有非常詳細(xì)的C語言使用教程及相關(guān)基礎(chǔ)知識(shí),對(duì)正在學(xué)習(xí)c語言的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 詳解C++ 前置聲明

    詳解C++ 前置聲明

    這篇文章主要介紹了C++ 前置聲明的相關(guān)資料,幫助大家更好的理解和使用c++,感興趣的朋友可以了解下
    2020-09-09
  • C++實(shí)現(xiàn)順序表的常用操作(插入刪出查找輸出)

    C++實(shí)現(xiàn)順序表的常用操作(插入刪出查找輸出)

    實(shí)現(xiàn)順序表的插入,刪除,查找,輸出操作在C語言中經(jīng)常用到。下面小編給大家整理實(shí)現(xiàn)代碼,一起看下吧
    2016-08-08
  • C++基于prim實(shí)現(xiàn)迷宮生成

    C++基于prim實(shí)現(xiàn)迷宮生成

    這篇文章主要為大家詳細(xì)介紹了C++基于prim實(shí)現(xiàn)迷宮生成,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評(píng)論