版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、頭文件class CCacl2Dlg : public CDialog/ Constructionpublic: int m_fun; /m_fun是運算符如:+,-,*,/ void AddFun(int j); /該函數(shù)的功能是輸入數(shù)字 void AddNum(int i); /該函數(shù)的功能是輸入運算符 int m_ForS; /指示此時輸入的是 /第一個數(shù)還是第二個數(shù) bool m_firx,m_secx; /指示此時是否在輸入小數(shù)部分 /即是否按過了小數(shù)點 double m_first,m_second; /第一第二個數(shù) double m_firstz,m_secondz; /第一第二
2、個數(shù)的整數(shù)部分 double m_firstx,m_secondx; /第一第二個數(shù)的小數(shù)部分 int m_firxw,m_secxw; /第一第二個數(shù)的小數(shù)部分的位數(shù) int m_firzorf,m_seczorf; /指示是否是負數(shù) /既是否按過+/-鍵 bool m_EnterSec; /是否輸入了第二個數(shù); double m_result; /結(jié)果 double m_mfir,m_msec; / 記住上次參加運算的第一二個數(shù) bool m_sfmf,m_sfms,m_sfmfun; /指示是否此時還記的上次的數(shù)和運算符 int m_mfun; /記住上次的運算符 CCacl2Dlg(C
3、Wnd* pParent = NULL); / standard constructor/ Dialog Data /AFX_DATA(CCacl2Dlg) enum IDD = IDD_CACL2_DIALOG ; CEdit m_xedit; double m_x; /AFX_DATA / ClassWizard generated virtual function overrides /AFX_VIRTUAL(CCacl2Dlg) protected: virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support /
4、AFX_VIRTUAL/ Implementationprotected: HICON m_hIcon; / Generated message map functions /AFX_MSG(CCacl2Dlg) afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void On0(); afx_msg void On1(); afx_msg void On2(); afx_msg void On3(); af
5、x_msg void On4(); afx_msg void On5(); afx_msg void On6(); afx_msg void On7(); afx_msg void On8(); afx_msg void On9(); afx_msg void OnAdd(); afx_msg void OnBack(); afx_msg void OnDiv(); afx_msg void OnGo(); afx_msg void OnOn(); afx_msg void OnSub(); afx_msg void OnTim(); afx_msg void OnXsd(); afx_msg
6、 void OnZfh(); afx_msg void OnAbtath(); /AFX_MSG DECLARE_MESSAGE_MAP();CPP文件CCacl2Dlg:CCacl2Dlg(CWnd* pParent /*=NULL*/) : CDialog(CCacl2Dlg:IDD, pParent) /AFX_DATA_INIT(CCacl2Dlg) m_x = 0.0; /AFX_DATA_INIT / Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()
7、-LoadIcon(IDR_MAINFRAME); m_first=0.0;m_second=0.0; /該行以下為初始化 m_firstz=0;m_firstx=0.0; m_secondz=0;m_secondx=0.0; m_firx=FALSE;m_secx=FALSE; m_firxw=0;m_secxw=0; m_firzorf=1;m_seczorf=1; m_EnterSec=FALSE; m_result=0.0; m_ForS=1; m_mfir=0.0;m_msec=0.0;m_mfun=0; m_sfmf=FALSE;m_sfms=FALSE;m_sfmfun=FALS
8、E; void CCacl2Dlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CCacl2Dlg) DDX_Control(pDX, IDC_RESULT, m_xedit); DDX_Text(pDX, IDC_RESULT, m_x); /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CCacl2Dlg, CDialog) /AFX_MSG_MAP(CCacl2Dlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRA
9、GICON() ON_BN_CLICKED(IDC_0, On0) ON_BN_CLICKED(IDC_1, On1) ON_BN_CLICKED(IDC_2, On2) ON_BN_CLICKED(IDC_3, On3) ON_BN_CLICKED(IDC_4, On4) ON_BN_CLICKED(IDC_5, On5) ON_BN_CLICKED(IDC_6, On6) ON_BN_CLICKED(IDC_7, On7) ON_BN_CLICKED(IDC_8, On8) ON_BN_CLICKED(IDC_9, On9) ON_BN_CLICKED(IDC_ADD, OnAdd) ON
10、_BN_CLICKED(IDC_BACK, OnBack) ON_BN_CLICKED(IDC_DIV, OnDiv) ON_BN_CLICKED(IDC_GO, OnGo) ON_BN_CLICKED(IDC_ON, OnOn) ON_BN_CLICKED(IDC_SUB, OnSub) ON_BN_CLICKED(IDC_TIM, OnTim) ON_BN_CLICKED(IDC_XSD, OnXsd) ON_BN_CLICKED(IDC_ZFH, OnZfh) ON_BN_CLICKED(IDC_ABTATH, OnAbtath) /AFX_MSG_MAPEND_MESSAGE_MAP(
11、)/ CCacl2Dlg message handlersvoid CCacl2Dlg:OnSysCommand(UINT nID, LPARAM lParam) if (nID & 0 xFFF0) = IDM_ABOUTBOX) CAboutDlg dlgAbout; dlgAbout.DoModal(); else CDialog:OnSysCommand(nID, lParam); / If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC
12、applications using the document/view model,/ this is automatically done for you by the framework.void CCacl2Dlg:OnPaint() if (IsIconic() CPaintDC dc(this); / device context for painting SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); / Center icon in client rectangle int cxIcon = GetSys
13、temMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; / Draw the icon dc.DrawIcon(x, y, m_hIcon); else CDialog:OnPaint(); / The system calls this to obtain the cursor to di
14、splay while the user drags/ the minimized window.HCURSOR CCacl2Dlg:OnQueryDragIcon() return (HCURSOR) m_hIcon;void CCacl2Dlg:On0() /輸入0 / TODO: Add your control notification handler code here AddNum(0);void CCacl2Dlg:On1() /輸入1 / TODO: Add your control notification handler code here AddNum(1); void
15、CCacl2Dlg:On2() /輸入2 / TODO: Add your control notification handler code here AddNum(2); void CCacl2Dlg:On3() /輸入3 / TODO: Add your control notification handler code here AddNum(3); void CCacl2Dlg:On4() /輸入4 / TODO: Add your control notification handler code here AddNum(4);void CCacl2Dlg:On5() /輸入5 /
16、 TODO: Add your control notification handler code here AddNum(5);void CCacl2Dlg:On6() /輸入6 / TODO: Add your control notification handler code here AddNum(6);void CCacl2Dlg:On7() /輸入7 / TODO: Add your control notification handler code here AddNum(7); void CCacl2Dlg:On8() /輸入8 / TODO: Add your control
17、 notification handler code here AddNum(8);void CCacl2Dlg:On9() /輸入9 / TODO: Add your control notification handler code here AddNum(9);void CCacl2Dlg:OnAdd() /輸入+ / TODO: Add your control notification handler code here AddFun(1); void CCacl2Dlg:OnBack() /按back鍵 / TODO: Add your control notification h
18、andler code here if(m_ForS=1) /如果此時在輸入第一個數(shù) if(m_firx=FALSE) /如果此時在輸入整數(shù)部分 if(m_firstz10) /如果整數(shù)部分小于10 m_firstz=0; /改為0 m_firzorf=1; /置符號為正 else int y1=(int)m_firstz;/y1為一與整數(shù)部分相等的數(shù) y1/=10; /去掉個位數(shù) m_firstz=y1; else /如果在輸入小數(shù)部分 if(m_firxw=1) /此時小數(shù)部分只有一位 m_firstx=0.0;m_firxw=0;m_firx=FALSE;/小數(shù)部分清為0 else in
19、t y2=(int)(m_firstx*pow(10,m_firxw); /取一整數(shù)與小數(shù)點所有的數(shù)表示的整數(shù)相等,如123等于0.123的小數(shù)部分表示的數(shù) y2/=10;m_firxw-; /去掉最后一位 m_firstx=y2*pow(10,(-1)*m_firxw); m_first=m_firzorf*(m_firstz+m_firstx); /計算出第一個數(shù) m_x=m_first;UpdateData(FALSE); /顯示它 else if(m_ForS=2) /如果在輸入第二個數(shù),處理方法同第一個數(shù) if(m_secx=FALSE) if(m_secondz10) m_seco
20、ndz=0; m_seczorf=1; else int y3=(int)m_secondz; y3/=10; m_secondz=y3; else if(m_secxw=1) m_secondx=0.0;m_secxw=0;m_secx=FALSE; else int y4=(int)(m_secondx*pow(10,m_secxw); y4/=10;m_secxw-; m_secondx=y4*pow(10,(-1)*m_secxw); m_second=m_seczorf*(m_secondz+m_secondx); m_x=m_second;UpdateData(FALSE); vo
21、id CCacl2Dlg:OnDiv() /輸入/ / TODO: Add your control notification handler code here AddFun(4);void CCacl2Dlg:OnGo() /按=號運算 / TODO: Add your control notification handler code here if(m_sfmf=TRUE&m_sfms=TRUE&m_sfmfun=TRUE) /如果記著第一,二個數(shù)和運算符,即上次算完后未輸入數(shù),而再次按= if(m_mfun=1)m_result=m_mfir+m_msec; /m_fun為1,則用上
22、次的數(shù)和符號加,下同 else if(m_mfun=2)m_result=m_mfir-m_msec; /m_fun為2,則減,下同 else if(m_mfun=3)m_result=m_mfir*m_msec; /為3,則乘,下同 else if(m_mfun=4)m_result=m_mfir/m_msec; /為4,則除,下同 m_sfmf=TRUE;m_sfms=TRUE;m_sfmfun=TRUE; /記住參加運算的數(shù)和運算符 m_mfir=m_result;m_msec=m_msec;m_mfun=m_mfun; else if(m_sfmf=TRUE&m_sfms=FALSE&
23、m_sfmfun=FALSE)/只記的第一數(shù),如算完2+3=5后按*4= if(m_fun=1)m_result=m_mfir+m_second; else if(m_fun=2)m_result=m_mfir-m_second; else if(m_fun=3)m_result=m_mfir*m_second; else if(m_fun=4)m_result=m_mfir/m_second; m_sfmf=TRUE;m_sfms=TRUE;m_sfmfun=TRUE; m_mfir=m_result;m_msec=m_second;m_mfun=m_fun; else if(m_sfmf=
24、TRUE&m_sfms=TRUE&m_sfmfun=FALSE) /記住了第一個數(shù),未輸入第二個數(shù),輸入了運算符.如算完2+3=5后按*=結(jié)果為5*5=25; m_second=m_mfir; if(m_fun=1)m_result=m_mfir+m_second; else if(m_fun=2)m_result=m_mfir-m_second; else if(m_fun=3)m_result=m_mfir*m_second; else if(m_fun=4)m_result=m_mfir/m_second; m_sfmf=TRUE;m_sfms=TRUE;m_sfmfun=TRUE; m
25、_mfir=m_result;m_msec=m_second;m_mfun=m_fun; else if(m_sfmf=FALSE&m_sfms=FALSE&m_sfmfun=FALSE)/第一二個數(shù)和運算符都不記的,記全重新輸入,如算完2+3=5后輸入4*6= if(m_EnterSec=FALSE)m_second=m_first; if(m_fun=1)m_result=m_first+m_second; else if(m_fun=2)m_result=m_first-m_second; else if(m_fun=3)m_result=m_first*m_second; else i
26、f(m_fun=4)m_result=m_first/m_second; m_sfmf=TRUE;m_sfms=TRUE;m_sfmfun=TRUE; m_mfir=m_result;m_msec=m_second;m_mfun=m_fun; m_x=m_result; UpdateData(FALSE); /顯示結(jié)果 m_first=0;m_second=0.0; m_firstz=0;m_firstx=0.0; m_secondz=0;m_secondx=0.0; m_firx=FALSE;m_secx=FALSE; m_firxw=0;m_secxw=0; m_firzorf=1;m_s
27、eczorf=1; m_ForS=1; m_EnterSec=FALSE; void CCacl2Dlg:OnOn() /按on鍵 / TODO: Add your control notification handler code here m_x=0.0; /恢復默認值,下同 m_first=0.0;m_second=0.0; m_firstz=0;m_firstx=0.0; m_secondz=0;m_secondx=0.0; m_firx=FALSE;m_secx=FALSE; m_firxw=0;m_secxw=0; m_firzorf=1;m_seczorf=1; m_ForS=1
28、; m_mfir=0.0;m_msec=0.0; m_mfun=0; m_sfmf=FALSE;m_sfms=FALSE;m_sfmfun=FALSE; m_EnterSec=FALSE; UpdateData(FALSE); void CCacl2Dlg:OnSub() /輸入- / TODO: Add your control notification handler code here AddFun(2); void CCacl2Dlg:OnTim() /輸入* / TODO: Add your control notification handler code here AddFun(
29、3);void CCacl2Dlg:OnXsd() /按小數(shù)點. / TODO: Add your control notification handler code here if(m_ForS=1)m_firx=TRUE; /此時在輸入第一個數(shù),第一個數(shù)指示十是否該輸入小數(shù)部分變量置為真 else if(m_ForS=2)m_secx=TRUE; /在輸入第二個數(shù)void CCacl2Dlg:OnZfh() /按+/-鍵 / TODO: Add your control notification handler code here if(m_ForS=1) /此時在輸入第一個數(shù) m_fir
30、zorf=-1; /指示符置為-1 m_first*=-1; m_x=m_first; UpdateData(FALSE); else m_seczorf=-1; m_second*=-1; m_x=m_second; UpdateData(FALSE); void CCacl2Dlg:AddNum(int i) /輸入數(shù)字是時的處理函數(shù) if(m_ForS=1) if(m_firx=FALSE) /整數(shù)數(shù)部分 m_firstz*=10;m_firstz+=i; else /小數(shù)部分 m_firxw+;m_firstx+=pow(10,(-1)*m_firxw)*i; m_first=m_fi
31、rzorf*(m_firstz+m_firstx); m_x=m_first; m_sfmf=FALSE;m_mfir=0; UpdateData(FALSE); else if(m_ForS=2) /第二個數(shù),處理同第一個數(shù) m_EnterSec=TRUE; /將指示是否輸入第二個數(shù)的變量置為真 if(m_secx=FALSE) m_secondz*=10;m_secondz+=i; else m_secxw+;m_secondx+=pow(10,(-1)*m_secxw)*i; m_second=m_seczorf*(m_secondz+m_secondx); m_sfms=FALSE;m_msec=0; m_x=m_second; UpdateData(FALSE); void CCacl2Dlg:AddFun(int j) /輸入運算符時的處理函數(shù) if(m_sfmf=TRUE&m_sfmfun=FALSE&m_EnterSec=TRUE) if(m_fun=1)m_result=m_mfir+m_second; else if(m_fun=2)m_result
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房屋租賃合同范例樣式
- 放射治療試題庫與答案
- 電機維修質(zhì)保合同范例
- 內(nèi)科考試模擬題(含答案)
- 管理學考試題含答案
- 新房建筑合同范例
- 地產(chǎn)咨詢合同范例
- 定制皮質(zhì)物品合同范例
- 專銷低價混凝土合同范例
- 2025年河池貨運從業(yè)資格證模擬考試題庫
- 老年患者圍術期ERAS護理
- 2024年合肥百姓公共服務云平臺有限公司招聘筆試沖刺題(帶答案解析)
- 沙門菌感染的人工智能與機器學習應用
- 電氣工程及其自動化大學生職業(yè)規(guī)劃
- 第四單元+和諧與夢想+復習課件 統(tǒng)編版道德與法治九年級上冊
- 《公寓運營方案》課件
- Linux配置與管理智慧樹知到期末考試答案2024年
- 2024中國華電集團限公司校招+社招高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 《衛(wèi)生檢疫》期末復習選擇題及答案
- 石家莊藁城市2023-2024學年八年級上學期期末數(shù)學測試卷(含答案)
- 福建省漳州市2023~2024學年高一上學期期末質(zhì)量檢測地理試題(含答案解析)
評論
0/150
提交評論