資源描述:
《手把手教你mfc編程計算器》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫。
1、STEP1(頁面設計部分與控件添加部分)???首先打開VC,選擇MFCAppWizard[exe],設定好路徑和工程名(這里我設置工程名為為“My”)。這里要注意的是在創(chuàng)建向導步驟1的時候,我們選擇“基本對話框”。?之后我們可以點擊完成便看到以下界面此時我們把當前頁面上原配的控件按Delete全部清除(如下圖)?接著我們按照MFC自帶的控件選項進行我們本次計算器的控件添加(以下是控件)我們在原先清空的界面中依次用上圖控件畫出一個基本的計算器頁面(如下圖)。當然作為“所見即所得”的MFC控件設計,干凈整齊的界面是基本要求,甚至會影響用戶的心情。上圖我們
2、用按鈕控件添加一共15個按鈕,分別是數(shù)字“0~9”以及“+-*/”。每個控件“屬性”都有屬于它自己的ID,默認的按鈕按鍵為IDC_BUTTON0,而且Cap當然我們?yōu)榱恕邦櫭剂x”,對控件ID進行修改成我們容易辨認的(也可以不改),添加完控件并修改ID之后。(如下圖)這里我們把數(shù)字按鈕0設置ID為IDC_BUTTON14_NUM0,其他的依次類推??完成修改ID后,就需給控件添加消息響應了,基本操作可以是直接雙擊控件,便會有向導提示。MFC默認下了的響應信息都為On_開頭,而且以下顯示的是數(shù)字5的消息響應.之后所有的依次類推,這步驟一般不對成員函數(shù)名
3、稱做任何修改,直接點擊OK即可?之后就會跳轉到具體的代碼實現(xiàn)過程這里我們依次給每一個控件添加消息響應函數(shù)(以下僅列出一部分)到此為止我們基本上完成了計算器頁面的前半部分預備工作,下來是我們的對控件具體實現(xiàn)代碼的添加?這里我把添加的控件消息響應函數(shù)列出來這里忘記了,提醒一點編輯框控件的ID是IDC_EDIT1IDC_EDIT2IDC_EDIT3?還有加減乘除的控件添加當初沒有進行名字的設置默認為voidCMyDlg::OnButton1()//加voidCMyDlg::OnButton2()//減voidCMyDlg::OnButton3()//乘vo
4、idCMyDlg::OnButton4()//除////////////////////////////////////////////////////在開始第二步之前有一項工作時必須要做的,那便是添加3個成員變量和一個CEdit類的變量具體添加方法,就是右鍵主對話框CMyDlg->AddMemberVariable也可以是在菜單欄中選擇“查看”->“建立類向導”?這里我們把3個編輯框控件內的變量都改變?yōu)閐ouble型的(因為進行四則運算難免出現(xiàn)小數(shù)點)之后再在控件IDC_EDIT3中選擇"AddVariable"并且數(shù)據(jù)類型選擇Control類型此
5、時變量自動改為了CEdit類這步的意思是說我們把編輯框控件3的設置為CEdit類并且設置一個成員對象是m_CResult。???//////////////////////////////////////////////////////////////////////////STEP2(控件消息響應函數(shù)具體代碼添加部分)?首先從加法開始voidCMyDlg::OnButton1(){?//TODO:Addyourcontrolnotificationhandlercodehere?UpdateData();doublen_result;n_resul
6、t=m_num1+m_num2;m_result=n_result;charsz[20];sprintf(sz,"%f",m_result);m_CResult.SetWindowText(sz);}??UpdateData()是MFC的窗口函數(shù),用來刷新數(shù)據(jù)的由于我們進行基本運算需要更新數(shù)據(jù)所以必須添加這個函數(shù)。(可以認為是必須的)?n_result=m_num1+m_num2;m_result=n_result;charsz[20];sprintf(sz,"%f",m_result);以上代碼是進行加法的基本語句,然后數(shù)組保存并格式化打印輸出。m
7、_CResult.SetWindowText(sz);此句是把結果輸出在之前用CEdit類創(chuàng)建的對象m_CResult,m_CResult調用SetWindowText(sz);把結果顯示在編輯框中。??無獨有偶剩下的減法乘法和除法也是大同小異(只是把符號小改一下便可~~)這里貼出所有加減乘除的代碼voidCMyDlg::OnButton1(){?//TODO:Addyourcontrolnotificationhandlercodehere?UpdateData();doublen_result;n_result=m_num1+m_num2;m_r
8、esult=n_result;charsz[20];sprintf(sz,"%f",m_result);m_