按照我們的之前的做法,先新建工程。
把基本的內容都添加上。
形成這樣一個樣子:
並且進行試運行,讓程序能夠完成加法運算。
值的注意的是,靜態文本那里要改一下名字,否則無法將成員變量進行添加。
前期准備:
然后就可以開始做我們的非模態對話框了。
一、創建這樣一個對話框
到資源視圖下面的,找到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