![手把手教你MFC編程計算器_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/31/14ba5677-97b7-48a6-856e-8209b8522c7e/14ba5677-97b7-48a6-856e-8209b8522c7e1.gif)
![手把手教你MFC編程計算器_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/31/14ba5677-97b7-48a6-856e-8209b8522c7e/14ba5677-97b7-48a6-856e-8209b8522c7e2.gif)
![手把手教你MFC編程計算器_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/31/14ba5677-97b7-48a6-856e-8209b8522c7e/14ba5677-97b7-48a6-856e-8209b8522c7e3.gif)
![手把手教你MFC編程計算器_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/31/14ba5677-97b7-48a6-856e-8209b8522c7e/14ba5677-97b7-48a6-856e-8209b8522c7e4.gif)
![手把手教你MFC編程計算器_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-7/31/14ba5677-97b7-48a6-856e-8209b8522c7e/14ba5677-97b7-48a6-856e-8209b8522c7e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、STEP 1 (頁面設(shè)計部分與控件添加部分)首先打開VC,選擇MFC AppWizardexe,設(shè)定好路徑和工程名(這里我設(shè)置工程名為為“My)。這里要注意的是在創(chuàng)建向?qū)Р襟E1的時候,我們選擇 基本對話框”。之后我們可以點擊完成便看到以下界面口工悴(D AtitU Sfi MLkd.工Sb 粗煙也 ma)工冋(D 旨世i耳邑*Q0 H :!.沁 叱吟網(wǎng)/ *N|粵|肄轉(zhuǎn)韓姑I曰$ m暮口r*ia;_ ?m. I C sn v u此時我們把當(dāng)前頁面上原配的控件按Delete全部清除(如下圖)豈建辟涌陽IT弧扎工程狙連眠齊馬3二總稱勘_ SCMYI)I【悩| 日理 mci!ilwTCMVDI|t*
2、 FH ;闔宙喰Add Member Variable也可以是在菜單欄中選擇查看”建立類向?qū)essageMrmher Variables Automstion | AdiveX Fvents | Cfss InfoErojct:Class Qame:CMyDlQOAAini2EDig 九丄加洙mg-cppControl IDs:TypeMemberJDC_BHTON3IDC_BUTTON4IDC0UTTONGIDCBUTTONGNUM?ICC0UTTONZ_NUM3IDC20inTON8_NUM4IDCBinTON3ZNUM5IDC EDI11duublcinnumlIDC EDITZdou
3、blemnumZjuc EDiraduublemresuJtIDC EDITSCEditm CHesultDtscripdun:這里我們把3個編輯框控件內(nèi)的變量都改變?yōu)閐ouble型的(因為進(jìn)行四則運算難免出現(xiàn)小數(shù)點)之后再在控件 IDC_EDIT3中選擇Add Variable并且數(shù)據(jù)類型選擇 Control類型 此時變量自動改為了CEdit類這步的意思是說我們把編輯框控件 3的設(shè)置為CEdit類并且設(shè)置一個成員對象是 m CResult。Member variable name!m_C ResultControl-Variable type:CEditTCategory;Descripti
4、on:m叩to CEditmember/STEP 2 (控件消息響應(yīng)函數(shù)具體代碼添加部分)首先從加法開始void CMyDlg:O nButto n1()/ TODO: Add your control notification handler code hereUpdateData(); double n_result;n_result = m_num1 + m_num2; m_result = n_result;char sz20; sprintf(sz,%f,m_result); m_CResult.SetWindowText(sz); UpdateData() 是 MFC 的窗口函數(shù),
5、用來刷新數(shù)據(jù)的由于我們進(jìn)行基本運算需要更新數(shù)據(jù) 所以必須添加這個函數(shù)。(可以認(rèn)為是必須的)n_result = m_num1 + m_num2;m_result = n_result;char sz20;sprintf(sz,%f,m_result);以上代碼是進(jìn)行 加法的基本語句,然后數(shù)組保存并格式化打印輸出。m_CResult.SetWindowText(sz); 此句是把結(jié)果輸出在之前用 CEdit 類創(chuàng)建的對象 m_CResult ,m_CResult 調(diào)用 SetWindowText(sz); 把結(jié)果顯示在編輯框中。無獨有偶 剩下的減法 乘法 和除法 也是大同小異(只是把 符號小改一
6、下便可 ) 這里貼出所有加減乘除的代碼void CMyDlg:OnButton1()/ TODO: Add your control notification handler code hereUpdateData();double n_result;n_result = m_num1 + m_num2;m_result = n_result;char sz20;sprintf(sz,%f,m_result);m_CResult.SetWindowText(sz);void CMyDlg:OnButton2()/ TODO: Add your control notification hand
7、ler code hereUpdateData();double n_result;n_result = m_num1 - m_num2;m_result = n_result;char sz20;sprintf(sz,%f,m_result); m_CResult.SetWindowText(sz);void CMyDlg:OnButton3()/ TODO: Add your control notification handler code hereUpdateData();double n_result;n_result = m_num1 * m_num2;m_result = n_r
8、esult;char sz20;sprintf(sz,%f,m_result);m_CResult.SetWindowText(sz);void CMyDlg:OnButton4()/ TODO: Add your control notification handler code hereUpdateData();double n_result;n_result = m_num1 / m_num2;m_result = n_result;char sz20;sprintf(sz,%f,m_result); m_CResult.SetWindowText(sz);poid CMyDlg:0nB
9、utton2() uold CMyDlg:0nButton3()/ TODU: AddcnntroL notiFicatlon hndlr code hereUpdat?Data();double n rpsult;n_result = m_nuni1 * n_ num?;n_rpsult = n_result;char ezJ20;sprintffszfresul t);n_CResult.SetWindowText(sz);void CMijDI.g:OnButton()點擊 “事件 ”- “選擇 EN_SETFOCU”S (這里程序默認(rèn)的響應(yīng)函數(shù)是OnsetfocusEdit1 )依次類
10、推我們也給編輯框2添加事件響應(yīng)函數(shù)OnsetfocusEdit2,方法同上如下圖nEditFlag = 0 ;設(shè)置好之后,我們還要做一些初始化工作,在程序運行之初,我們先初始化那么在哪里初始化呢?很簡單,正如大家想的一樣在On I ni tDialog()內(nèi)進(jìn)行初始化我們只需在OnlnitDialog()函數(shù)中加入一句nEditFlag = 0 ;便可以了 (如下圖黑條字體部分)/ ChlyDlg message handlersBOOL GIDlg; ;OnInitlLalag()CDialog : :Dnlnitt3Kog();nEditFlagi=/ Add ftbout * p men
11、u i ten tuneriu,/ IDM_ABOUTBdK uiiist 缸 in the system comnand range.ASSERT ( ( I DM_ABDUTBOK & 0xFFFfl = f IM_flBOUTBO?G);ftSSEBT( IDM_ftfi(JUT5O?; 0kFO(19);CMentJ* pSyshle-nu - GetSyste-mMertutFftLSE);if (卩Sy5Henu != HULL) fCString strfltJoutHpnu;s t r A bo u tMtnu. LoadStr Ing (1 BS_flBOllTBOX ):i
12、f ( TstrAboutNriu. isEnptyO)Appe*ndripnu(MF_SEFftflftT0R):autoinaticallypSy5Mfnu-App&ndhlpnu(MF_STRING, IOM_flBOUT0OX, strfiboutMenu):/ Set the ican For this dialos. The Frdmewarh does thisis not a dialog big icon snail icon/ 訓(xùn)Fiefi the application1 s main uindou Set I con(m_hI con, TRUE); SetSet I
13、con(n_hI con. FHLSE);H Set/ TDDO: Add extra Initialisation herereturn TRUE; ff return TRUE unless you set the Focus to a control/之后我們再為兩個事件響應(yīng)函數(shù)進(jìn)行OnsetfocusEditl ()和OnsetfocusEdit2 ()添加代joid CMyDlgi!0nS(?tFoeusEdit1()/ TODO: Add youF control notification handler code here nEditFlag - 1;void CIDlg::0n
14、SetfocusEdit2()t.U IODO: Add jour 匚ontrol notiFicatlnn handler code hre nEditFlq 二 2;當(dāng)用戶選定編輯框 1的時候,n EditFlag = 1;當(dāng)用戶選定編輯框 2的時候,nEditFlag = 2;而鼠標(biāo)消息WM_LBUTTONDOWN 具體代碼如下uoid:OnLButtonDon(liINr nFiCPoint pnint)J J TODO: Add ytiup nessago tiandl&r cud& her& and/or cll default ttiis-ptFocus();nEdi tFlaq
15、 = Q;CDilog;: OnLBut ton town (fi Flags, point);/STEP 3 (按鍵09的響應(yīng)部分)這里由于代碼都大同小異,所以就用數(shù)字按鈕1, 2來進(jìn)行簡要說明uoidz:DnRuttonNuril ()tn TODO: Add your ctintroL riotiFication handler UpdateData(TRUE);iff nEdltFlaq 1)n_iiun1=iiii_iiunii *1 a+1;else if( nEditFlag = 2)upddteData(FftLSE);code here用if語句去判斷標(biāo)記常量nEditFla
16、g從而給判斷是m_num1還是m_num2進(jìn)行操作這里m_num1是編輯框1內(nèi)的數(shù)字m num2是編輯框2內(nèi)的數(shù)字剩下了 39代碼以上大同小異。這里進(jìn)行一個說明m_num2=m_num2*10+1; 很多人會問這步是說明意思,這步乍看貌似有點一頭霧水(當(dāng)初我也是這樣)但是仔細(xì)看看還是能看明白的。比方說 用戶想打出自然數(shù) “234”用戶第一次 點的數(shù)字是 2 那么此時對應(yīng)代碼執(zhí)行是這段m_num2=m_num2*10+2; 那么 m_num2 = 0*10 +2 ( 初始化時 m_num2 = 0) 之后如果在點擊 3 的時候執(zhí)行的代碼是m_num2=m_num2*10+3; (此時經(jīng)過第一步
17、m_num2 已經(jīng)為 2 了,再點了 3 結(jié)果為 m_num2= 2*10+3 = 23)最后點擊 4 執(zhí)行的代碼是m_num2=m_num2*10+4; ( 23*10 +4=234 )通過以上小例子 大家明白了吧 為什么要 “先乘以 10 再加 數(shù)字/人家XP只有1個編輯框.)。最大的障礙就是唯獨是那個EN_SETFOCUS這個函數(shù)的空白了。我只單存的百度到GetFocus()能獲得焦點,但是其實問題遠(yuǎn)遠(yuǎn)并沒有那么簡單,涉及到很多問題。我當(dāng)初設(shè)置判斷的時候還不知道用一個EN_SETFOCUS,并且初始化標(biāo)記這個方法,過后才知道。我把之前的錯誤帖一下順便是當(dāng)作是一個警告void CMyDlg
18、:O nButto n14NumO()/ TODO: Add your con trol no tificati on han dler code here UpdateData(TRUE);if( GetDlgltem(IDC_EDIT1)-GetFocus()m_num仁m_nu m1*10+0;else if( GetDlgltem(IDC_EDIT2)-GetFocus()m_n um2=m_num2*10+0;UpdateData(FALSE);/分析GetDlgItem( )如果大家不熟悉的話 我可以先解釋一下是獲得編輯框首先 GetDlgItem(IDC_EDIT1) 獲取了 ID 為 IDC_EDIT1 也就是編輯框 CEdit 類的對象的指針, 繼承了 CWnd 類函數(shù) GetFocus 是 CWnd 中的靜態(tài)函數(shù),來看一下函數(shù)原型: static CWnd* PASCALGetFocus( ); 返回值是 CWnd* 類型的 ,也就是說如果當(dāng)前對話框或是控件被focus ,那么就返回這個對話框或控件的指針 .我錯誤的在 if 語句中將這個指針返回值當(dāng)作了判斷條件 ,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 成都銀杏酒店管理學(xué)院《EDA技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 浙大寧波理工學(xué)院《空間數(shù)據(jù)庫》2023-2024學(xué)年第二學(xué)期期末試卷
- 西安文理學(xué)院《文化產(chǎn)業(yè)政策與法規(guī)》2023-2024學(xué)年第二學(xué)期期末試卷
- 南陽職業(yè)學(xué)院《醫(yī)學(xué)與法學(xué)專題講座》2023-2024學(xué)年第二學(xué)期期末試卷
- 廣東第二師范學(xué)院《關(guān)學(xué)概論》2023-2024學(xué)年第二學(xué)期期末試卷
- 遼寧廣告職業(yè)學(xué)院《機器人傳感與檢測技術(shù)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025至2030年中國旋轉(zhuǎn)多用筆筒數(shù)據(jù)監(jiān)測研究報告
- 2025至2031年中國男式休閑皮鞋行業(yè)投資前景及策略咨詢研究報告
- 2025至2030年冷療設(shè)備項目投資價值分析報告
- 2025至2030年中國智能控制板數(shù)據(jù)監(jiān)測研究報告
- 中壓電力線載波通信技術(shù)規(guī)范
- 周志華-機器學(xué)習(xí)-Chap01緒論-課件
- YB∕T 4146-2016 高碳鉻軸承鋼無縫鋼管
- 多圖中華民族共同體概論課件第十三講先鋒隊與中華民族獨立解放(1919-1949)根據(jù)高等教育出版社教材制作
- 第三單元《交流平臺與初試身手》課件語文六年級下冊
- (2024年)TPM培訓(xùn)講義課件
- (2024年)物聯(lián)網(wǎng)概述課件pptx
- 高考英語單詞3500(亂序版)
- 《社區(qū)康復(fù)》課件-第五章 脊髓損傷患者的社區(qū)康復(fù)實踐
- 北方、南方戲劇圈的雜劇文檔
- 康復(fù)科st科出科小結(jié)
評論
0/150
提交評論