最近一段時間一直在作這個東西,剛剛拿到題目的時候認爲這是一個簡單的程序,但是隨着編寫程序的深刻,發現這也不是一個很簡單的程序,主要是須要考慮到一些連續加減以及混合運算的狀況。
首先介紹一下這個小計算器的功能。其實也沒有什麼新的功能啦,只是有一些簡單的+、-、*、/運算,可以完成混合運算,是一個標準型的計算器。
創建文件
(1)創建應用程序外殼
建立一個新的AppWizard項目,命名爲shiyan,選擇Dialog based;其餘都選用默認屬性,單擊Finish完成生成應用程序的步驟。
進入對話框界面之後,按下圖所示佈置顯示框和功能按鈕,這個小計算器一共須要10個數字鍵,9個功能鍵兩個文本框。(下面的顯示窗口是在測試程序時用的跟蹤窗口,通常的計算器能夠刪去)。
(2)設置窗口屬性
將上面的顯示框屬性設置成爲CString型,下面的跟蹤顯示框設置成爲Double型,而且綁定兩個變量給他們。分別是m_text(顯示框),m_show(跟蹤顯示框)ID改爲IDC_text,IDC_show。數字鍵的ID號更改爲爲IDC_OnX,Caption改成相應的數字。
(3)設置公有變量
這個程序中我用的公共變量比較得多,主要是由於我是新手嗎!!下面是全部公有變量的列表:
要給公有變量賦值須要在 OnInitDialog()函數中賦值,而這個函數就是在運行對話框時首先要運行的初始化函數,如今給須要賦初值的公有變量賦初值。
-
-
-
-
-
-
-
(3)編寫按鈕程序
數字鍵
雙擊你所要編寫的數字鍵進入相應的按鍵程序編寫,例如1建,雙擊後編寫程序:
-
-
-
-
-
-
-
-
if((sign=='-')||(sign=='*')||(sign=='/'))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
// TODO: Add your control notification handler code here
-
-
「-」號鍵程序:html
-
-
-
-
-
-
-
-
if((sign=='+')||(sign=='*')||(sign=='/'))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
// TODO: Add your control notification handler code here
-
-
「*」號鍵程序:
-
-
-
-
-
-
-
-
if((sign=='+')||(sign=='-')||(sign=='/'))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
// TODO: Add your control notification handler code here
-
-
「.」鍵程序:
-
void CShiyanDlg::Onpoint()
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
乘方鍵程序:
-
void CShiyanDlg::Onsqrt()
-
-
-
-
ss.Format(_T(
"%f"),temp4);
-
-
-
-
-
-
-
「+/-」鍵程序:
-
void CShiyanDlg::Onsign()
-
-
-
-
-
ss.Format(_T(
"%f"),temp2);
-
-
-
-
-
-
-
「C」鍵程序:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
「DEL」鍵程序:
-
-
-
-
-
-
-
-
ss.Format(
"%s",ss.Left(u));
-
-
-
-
-
「=」號建:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ss.Format(_T(
"%f"),temp4);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ss.Format(_T(
"%f"),temp4);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ss.Format(_T(
"%f"),temp4);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
ss.Format(_T(
"%f"),temp4);
-
-
-
-
-
-
-
-
-
-
-
-
-
-