mfc非模態對話框


按照我們的之前的做法,先新建工程。

把基本的內容都添加上。

形成這樣一個樣子:

並且進行試運行,讓程序能夠完成加法運算。

值的注意的是,靜態文本那里要改一下名字,否則無法將成員變量進行添加。

前期准備:

然后就可以開始做我們的非模態對話框了。


一、創建這樣一個對話框

到資源視圖下面的,找到Dialog右擊,出現下拉菜單。點擊插入Dialog

這步,應該都很熟練,先拖動兩個按鈕(否則可能會發生問題),然后稍微調整對話框的大小,最后添加一個靜態文本。輸入一些文字。

 

二、右鍵當前對話框,然后找到添加類,這個下拉菜單選項。

這樣起了一個名字:

C代表類名,immodel大概是非模的意思【笑哭】,dlg對話框。然后點擊完成。

/*

這里就是前面說的有可能會出現問題,不過,這個無關緊要,保存之后,直接進行下一步就可以了。

*/

 

之前我們說,在按鈕點下的時候,會觸發非模態對話框彈出的事件。

 

我們應該如何操作呢?

邏輯:這段代碼應該出現在按鈕按下的位置,也就是我們曾經書寫UpdateData();c=a+b的地方。在進行計算之前,要彈出對話框。1、創建該類的對象,並顯示。這就是算法了。在進行細化:1、創建之前要先詢問一下,是不是有必要創建,有的話直接顯示,沒有在創建並顯示。2、為了創建,應該要包含頭文件。因為它不屬於某個窗體,而是整個進程的。(注意:我們上次創建的模態窗口就只對應那個按鈕,所以是局部的。但是我們這次創建的非模窗口是不應該隨着響應結束而消亡的。所以他的聲明是全局的。所以同時也需要在構造函數進行初始化,在結束時,需要析構)

 

具體:

1、在MFC非模態窗口Dlg.h 中添加兩行代碼:

#include “ImmodelDlg.h”

CImmodelDlg *m_pimmodelDlg;

2、去構造里面初始化他。

下面留了一段兒紫色的BEGIN_MESSAGE_MAP可能會比較好定位。

總之在構造函數中添加完。

 

3、就可以去界面顯示了

需要在計算按鈕里面添加如下代碼:

 

if (m_pimmodelDlg == NULL){//判定對話框是否有所指向

m_pimmodelDlg = new CImmodelDlg();//指向一個非模對話框示例

m_pimmodelDlg->Create(IDD_DIALOG1, this);//創建

}

m_pimmodelDlg->ShowWindow(SW_SHOW);//顯示

如圖:

運行效果:

樣子是有了,但是需要析構析構!!!

 

這很重要。

在這段代碼的下面添加如下代碼:

CMFC非模態窗口Dlg::~CMFC非模態窗口Dlg(){

if (m_pimmodelDlg != NULL){

delete m_pimmodelDlg;

m_pimmodelDlg = NULL;

}

 

}

如圖:

如此非模態對話框的創建也完成了。

 

參考網站:

http://www.jizhuomi.com/school/c/161.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM