mfc模態對話框


Mfc模態對話框:

 

創建模態對話框:

【模態對話框:具有獨占行為,必須由用戶完成對當前對話框的響應,才能對本對話框所屬的進程進行其他操作】

 

例如:

我們創建一個加法計算器。點擊計算之后,彈出一個對話框,當用戶點擊完確定之后。才進行計算,如果點擊取消,則不進行計算。

把上次那個反復敲幾遍就會啦,我本身也是邊做博客邊在背。寫過一遍,就是比較有作用。

 

我懶了,就按照上一講制作的東西接着往下寫了。


以下正文:

一、界面部分

經常從下面這四個選項卡來回點點,要不每次我說的是啥你都不知道,,,開始我也不敢點。。。笑哭。。。

右鍵Dialog

點擊插入

2

發現兩點變化:

1、多出了一個東西,那必須是我們要求創建的對話框了

2、主要操作界面里面也出了新的對話框界面。

/*bug2:繼昨天的改名風波之后。【不改名,就添加不了變量】這個作為一個提示對話框玲瓏一些會比較好。所以我們選中它把它變小。從圖像界面的右下角點擊那個小黑點兒,往左上方拖拽。

發現確定沒了,然后后來程序的運行就比較詭異了,各種東西的操作也不聽使喚了。所以跟緊我。然后如果在看博客運行的同時發現了問題,歡迎評論討論。

*/

3、先把確定按鈕,往左上方,放放省的被擠沒了。

1)點擊確定按鈕,進行拖拽。

2)然后同時進行其他控件的調整。

3、添加一個靜態文本進行提示:是否要進行計算呢?【這個上一講說過啦,就不再寫了】

4、界面就好啦。

 

二、代碼鏈接

彈出對話框后,如此點擊:

給一個類名,這個名字的來源:c應該是取class的意思,tip提示嘛,dlg對話框的簡寫。

人品爆了。。。笑哭

之前創建之后,在這個IDD_DIALOG1下面都會報錯誤的。也可能這次着急了沒有改id導致沒有報錯。。。總之這里報錯與否都不影響我們繼續往下進行。

 

有了對應的類,接下來,當我們按下按鈕。創建該對象的實例,然后得到當前對話框返回的按鈕的值,從而決定是否進行操作。

 

所以,上面這句話就是就是算法了,【我眼中的算法,或許可以寫點兒什么,或許10年之后當我再次看到這個博文的時候可能感觸又不一樣了呢。。。那個時候可以再看看人月神話,一定會有新的領悟。】只是算法很簡單。幾乎不需要思考,所以不用數學對問題進行處理的算法,就是在拿英文寫故事。所以這點上來講,我們編程確實需要一些英文功夫。

 

算法的切入點在“當我們按下按鈕”。

然后我們要創建 CTipDlg類型的對象,首先要引入這個對象的頭文件。

#include "TipDlg.h"

這么一大段話,就是想說,這個包含頭文件的操作,應該放在我們雙擊按鈕之后到達的那個cpp文件里面,在當前這篇博客里面他就是MyAdditionComputer.cpp 文件里面。

 

然后在上次我們寫代碼的地方繼續這樣寫:

//也就是在這個文件里面,加上包含頭文件那句話。

void CMyAdditionComputerDlg::OnBnClickedButton1()

{

INT_PTR nRes;//typedef _W64 int INT_PTR   又把__W64 定義成 _W64...笑哭。。。

CTipDlg tipDlg;//聲明一個CTipDlg的對象 tipDlg

nRes = tipDlg.DoModal();//對象創建模型賦給那個整形指針。

if (nRes ==IDCANCEL){//整形指針的結果如果是退出

return;//就返回,對於當前這個按鈕按下事件的處理結束。

}

//否則 說明點擊的是確定,那么繼續往下執行。運算並得到結果。

// TODO:  在此添加控件通知處理程序代碼

UpdateData(true);//見名知意,更新數據。不過它到底是什么呢?雙擊UpdateData這個單詞。按下F12

//得到下面這樣一個函數

c = a + b;//記得我們之前寫的 a b 還有c 嘛,就是他們了,分別指定了int型的變量abc。然后做加法

UpdateData(false);

}

 

 

三、運行與結果:

除了這個框框:

點擊取消:

不會計算。

點擊確定

完成計算。

 

證明這是個模態窗口,在點擊完運算之后,隨意的點擊這個對話框上面的其他內容,可以看看是不是有響應。

 

下面一講將介紹,非模態窗口,就是當前對話框它彈它的,后面的內容可以繼續執行,要怎么做。

 


免責聲明!

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



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