學習最有效的方法就是實戰,這兩篇文章寫了做MFC加減乘除計算器的過程。
第一寫前台MFC界面搭建,第二寫后台計算原理及代碼。
MFC編程參考教程:http://www.jizhuomi.com/school/c/149.html
第二篇文章鏈接:C++做四則運算的MFC計算器(二)棧轉換和計算后綴表達式
搭建MFC項目
以VS2017為例,新建項目->MFC項目,寫名字,設路徑
應用程序類型,選擇基於對話框的,其他默認即可,直到最后一步
生成的類選擇Dlg
完成后,項目里會有很多自動添加的資源
.ico是圖標,隨便玩。
.rc和.rc2:rc2文件包含項目使用的附加資源的腳本文件。可以在項目的 .rc 文件的頂部包括 .rc2 文件。 .rc2 文件用於存放由多個不同項目使用的資源。不必為不同的項目多次創建相同的資源,而是可以將它們放在一個 .rc2 文件中,然后將該 .rc2 文件包括在主 .rc 文件中。雙擊都會調到資源視圖,在這編輯界面。
Dialog就是主要編輯的地方,ABOUTBOX是幫主窗口,MFCCALCULATION_DIALOG是主要窗口
那怎么加東西呢?在工具箱里,工具箱一般在側面的一個犄角格拉里,豎着的,里面有各種組件,感興趣的玩玩看。
此處用button按鈕、Edit Control編輯框和static text靜態文本就夠了。
把button拖到界面上,再按Ctrl拖能復制,數字0-9、+、-、*、/、(、)、刪除、清空和 =,19個按鈕。用參考線(格式->參考線設置)布局更方便。
右鍵按鈕->屬性,顯示控件的各種屬性,其中Caption屬性是按鈕的內容,寫“1”按鈕就顯示“1”,窗口的Caption就是窗口的標題。每個控件的ID屬性是獨立的,用默認生成的就行,也可以自己編寫。
按鈕事件
“刪除”按鈕點一次刪除一個字符,“清空”按鈕就是清空,其他按鈕每點一次,表達式編輯框就加一個字符
先為編輯框創建“值”變量、“控件”變量來控制內容,簡單地理解:“值”給“控件”就會顯示。右鍵表達式編輯器->添加變量
“值”類別是編輯框要現實的內容,名稱為editv。再以同方法建“控件”類別的變量editc。
計算結果框也要有“值”變量和“控件”變量,分別是resultv、resultc。
接下來為每個按鈕單擊時顯示到編輯框中。
雙擊按鈕,自動添加單擊事件的函數,並跳轉到MFCcalculationDlg.cpp,
使用UpdateData(false)將變量值給控件,要反過來把false改成true,這個后面會用到。為每個按鈕添加對應的函數。
實現刪除使用editv = editv.Left(editv.GetLength() - 1),Left(n)取左邊n個字符,editv.GetLength()取editv的長度,長度-1就刪掉最后一個。
實現清空使用editv = "";
“=”的功能是將控件的值傳給變量,再調用其他計算函數計算,把計算結果傳給另一個編輯框中。在這里先實現顯示計算表達式。
調試結果是這個樣子的: