1、MyCalculatorDlgcpp/ MyCalculatorDlg.cpp : implementation file /#include stdafx.h#include MyCalculator.h#include MyCalculatorDlg.h#include Math.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog
2、public: CAboutDlg();/ Dialog Data /AFX_DATA(CAboutDlg) enum IDD = IDD_ABOUTBOX ; /AFX_DATA / ClassWizard generated virtual function overrides /AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support /AFX_VIRTUAL/ Implementationprotected: /AFX_MSG(CAboutDl
3、g) /AFX_MSG DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD) /AFX_DATA_INIT(CAboutDlg) /AFX_DATA_INITvoid CAboutDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CAboutDlg) /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog) /AFX_MSG_MAP(CAboutDlg)
4、/ No message handlers /AFX_MSG_MAPEND_MESSAGE_MAP()/一、构造函数初始化CMyCalculatorDlg/ CMyCalculatorDlg dialogCMyCalculatorDlg:CMyCalculatorDlg(CWnd* pParent /*=NULL*/) : CDialog(CMyCalculatorDlg:IDD, pParent) /AFX_DATA_INIT(CMyCalculatorDlg) m_display = _T(0.0); m_first=0.0; m_second=0.0; m_operator=_T(+);
5、 m_coff=1.0; /AFX_DATA_INIT / Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CMyCalculatorDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CMyCalculatorDlg) DDX_Text(pDX, IDC_DISPLAY, m_display
6、); /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CMyCalculatorDlg, CDialog) /AFX_MSG_MAP(CMyCalculatorDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON0, OnButton0) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) ON_BN_CLICKED(IDC_BUTTON3, OnButton3) O
7、N_BN_CLICKED(IDC_BUTTON4, OnButton4) ON_BN_CLICKED(IDC_BUTTON5, OnButton5) ON_BN_CLICKED(IDC_BUTTON6, OnButton6) ON_BN_CLICKED(IDC_BUTTON7, OnButton7) ON_BN_CLICKED(IDC_BUTTON8, OnButton8) ON_BN_CLICKED(IDC_BUTTON9, OnButton9) ON_BN_CLICKED(IDC_BUTTON_SQRT, OnButtonSqrt) ON_BN_CLICKED(IDC_BUTTON_SIG
8、N, OnButtonSign) ON_BN_CLICKED(IDC_BUTTON_MUTIPLY, OnButtonMutiply) ON_BN_CLICKED(IDC_BUTTON_MINUS, OnButtonMinus) ON_BN_CLICKED(IDC_BUTTON_EQUAL, OnButtonEqual) ON_BN_CLICKED(IDC_BUTTON_DIV, OnButtonDiv) ON_BN_CLICKED(IDC_BUTTON_CLEAR, OnButtonClear) ON_BN_CLICKED(IDC_BUTTON_ADD, OnButtonAdd) ON_BN
9、_CLICKED(IDC_BUTTON_RECIPROCAL, OnButtonReciprocal) /AFX_MSG_MAPEND_MESSAGE_MAP()/ CMyCalculatorDlg message handlersBOOL CMyCalculatorDlg:OnInitDialog() CDialog:OnInitDialog(); / Add About. menu item to system menu. / IDM_ABOUTBOX must be in the system command range. ASSERT(IDM_ABOUTBOX & 0xFFF0) =
10、IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX AppendMenu(MF_SEPARATOR); pSysMenu-AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); / Set the icon for this dialog. The framework does this automatically / when the applications main window is not a dialog SetIcon(m_hIcon, TRUE); / Set big icon SetIcon(m_hIcon, F
11、ALSE); / Set small icon / TODO: Add extra initialization here return TRUE; / return TRUE unless you set the focus to a controlvoid CMyCalculatorDlg:OnSysCommand(UINT nID, LPARAM lParam) if (nID & 0xFFF0) = IDM_ABOUTBOX) CAboutDlg dlgAbout; dlgAbout.DoModal(); else CDialog:OnSysCommand(nID, lParam);
12、/ If you add a minimize button to your dialog, you will need the code below/ to draw the icon. For MFC applications using the document/view model,/ this is automatically done for you by the framework.void CMyCalculatorDlg:OnPaint() if (IsIconic() CPaintDC dc(this); / device context for painting Send
13、Message(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); / Center icon in client rectangle int cxIcon = GetSystemMetrics(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 t
14、he icon dc.DrawIcon(x, y, m_hIcon); else CDialog:OnPaint(); / The system calls this to obtain the cursor to display while the user drags/ the minimized window.HCURSOR CMyCalculatorDlg:OnQueryDragIcon() return (HCURSOR) m_hIcon;二、按钮函数void CMyCalculatorDlg:OnButton0() / TODO: Add your control notifica
15、tion handler code here if( m_coff = 1.0) m_second = m_second*10 + 0; else m_second = m_second + 0*m_coff; m_coff *= 0.1; UpdateDisplay(m_second);void CMyCalculatorDlg:OnButton1() / TODO: Add your control notification handler code here if( m_coff = 1.0) m_second = m_second*10 + 1; else m_second = m_s
16、econd + 1*m_coff; m_coff *= 0.1; UpdateDisplay(m_second); void CMyCalculatorDlg:OnButton2() / TODO: Add your control notification handler code here if( m_coff = 1.0) m_second = m_second*10 + 2; else m_second = m_second + 2*m_coff; m_coff *= 0.1; UpdateDisplay(m_second); void CMyCalculatorDlg:OnButto
17、n3() / TODO: Add your control notification handler code here if( m_coff = 1.0) m_second = m_second*10 + 3; else m_second = m_second + 3*m_coff; m_coff *= 0.1; UpdateDisplay(m_second); void CMyCalculatorDlg:OnButton4() / TODO: Add your control notification handler code here if( m_coff = 1.0) m_second
18、 = m_second*10 + 4; else m_second = m_second + 4*m_coff; m_coff *= 0.1; UpdateDisplay(m_second); void CMyCalculatorDlg:OnButton5() / TODO: Add your control notification handler code here if( m_coff = 1.0) m_second = m_second*10 + 5; else m_second = m_second + 5*m_coff; m_coff *= 0.1; UpdateDisplay(m
19、_second); void CMyCalculatorDlg:OnButton6() / TODO: Add your control notification handler code here if( m_coff = 1.0) m_second = m_second*10 + 6; else m_second = m_second + 6*m_coff; m_coff *= 0.1; UpdateDisplay(m_second); void CMyCalculatorDlg:OnButton7() / TODO: Add your control notification handl
20、er code here if( m_coff = 1.0) m_second = m_second*10 + 7; else m_second = m_second + 7*m_coff; m_coff *= 0.1; UpdateDisplay(m_second); void CMyCalculatorDlg:OnButton8() / TODO: Add your control notification handler code here if( m_coff = 1.0) m_second = m_second*10 + 8; else m_second = m_second + 8
21、*m_coff; m_coff *= 0.1; UpdateDisplay(m_second); void CMyCalculatorDlg:OnButton9() / TODO: Add your control notification handler code here if( m_coff = 1.0) m_second = m_second*10 + 9; else m_second = m_second + 9*m_coff; m_coff *= 0.1; UpdateDisplay(m_second); 三、开平方函数void CMyCalculatorDlg:OnButtonS
22、qrt() / TODO: Add your control notification handler code here m_second = sqrt(m_second); UpdateDisplay(m_second); 四、符号函数void CMyCalculatorDlg:OnButtonSign() / TODO: Add your control notification handler code here m_second = -m_second; UpdateDisplay(m_second); 五、加减乘除函数void CMyCalculatorDlg:OnButtonAd
23、d() / TODO: Add your control notification handler code here Calculate(); m_operator=+; void CMyCalculatorDlg:OnButtonMinus() / TODO: Add your control notification handler code here Calculate(); m_operator=-; void CMyCalculatorDlg:OnButtonMutiply() / TODO: Add your control notification handler code h
24、ere Calculate(); m_operator=*; void CMyCalculatorDlg:OnButtonDiv() / TODO: Add your control notification handler code here Calculate(); m_operator.Format(%s,/); void CMyCalculatorDlg:OnButtonClear() / TODO: Add your control notification handler code here m_first=0.0; m_second=0.0; m_operator = +; m_
25、coff = 1.0; UpdateDisplay(0.0); 六、计算函数void CMyCalculatorDlg:Calculate(void) switch(m_operator.GetAt(0) case +: m_first +=m_second;break; case -: m_first -=m_second;break; case *: m_first *=m_second;break; case /: if(fabs(m_second)= 0.000001) m_display = 除数不能为零; UpdateData(false); return; m_first /=m
26、_second;break; m_second=0.0; m_coff = 1.0; UpdateDisplay(m_first);七、“=”函数void CMyCalculatorDlg:OnButtonEqual() / TODO: Add your control notification handler code here Calculate(); m_first = 0.0; m_operator=+; 八、显示函数void CMyCalculatorDlg:UpdateDisplay(double lVal) m_display.Format( _T(%f),lVal); int
27、i=m_display.GetLength(); /格式化输出,将输出结果后的零全部截去 while(m_display.GetAt(i-1)=0) m_display.Delete(i-1,1);i-; UpdateData(false); /更新显示编辑框变量m_display九、倒数函数void CMyCalculatorDlg:OnButtonReciprocal() / TODO: Add your control notification handler code here if(fabs(m_second)0.000001) m_display = 除数不能为零; UpdateData(false); return; m_second= 1.0/m_second; UpdateDisplay(m_second);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1