1、四:设计思路1Windows消息处理机制的理解 首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。还有用户消息,比如鼠标的单击,双击,键盘的键入等。2.界面的设计,对需要的各种运算符在窗口中划出,然后定义各个的属性3成员函数及其定义,首先对编辑框的相关变量进行定义,定义为m_edit,将消息框和函数联系起来,然后进行编写相应函数。4运行结果并测试五:软件设计:设计步骤、界面设计、关键功能的实现1设计步骤:1). 添加头文件将Calculate.cpp(见附
2、录)改为Calculate.h将其添加到计算器Dlg.cpp : implementation file中,如下:#include Calculate.h。2.):成员函数及其释义 virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); afx_msg void OnChangeEdit1(); afx_msg void On1(); afx_msg void On2();
3、 afx_msg void On3(); afx_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 On0(); afx_msg void Onequal(); afx_msg void Onadd(); afx_msg void Onmin(); afx_msg void Onplus(); afx_msg void Ondiv(); afx_msg void Ondelete(); a
4、fx_msg void Oncountdown(); /AFX_MSG DECLARE_MESSAGE_MAP()CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD) /AFX_DATA_INIT(CAboutDlg) /AFX_DATA_INIT2界面设计1)界面的初步设计仿照Windows附件里面的计算器,在资源视图中画好界面。2)修改每个static的属性IDCAPTIONIDD_STATIC4简易表达式计算器 IDC_STATIC1待求表达式IDC_STATIC2运算结果3)修改每个button的属性IDC_BUTTON1等于(=)IDC_BUT
5、TON2全清(CE)IDC_BUTTON3清除 (C)4)修改每个button的处理机制在类向导Classwizard窗口中进行,如下图: 其button按钮的修改类似5)修改每个edit的类型和名称在类向导Classwizard窗口中进行:单击Add Variable按钮,在如下窗口中进行修改其他edit的修改类似最终结果如下:3关键功能的实现1).OnButton1()按钮的处理函数void CMy1Dlg:On1() / TODO: Add your control notification handler code here m_jisuan=m_jisuan+1; UpdateDat
6、a(FALSE);其他数字按钮类似2)运算符按钮的处理函数Onadd() sign=1; data=atof(m_jisuan); m_jisuan=+3)等号的按钮的处理函数Onequal() switch(sign) case 1: data=data+atof(m_jisuan); break; case 2: data=data-atof(m_jisuan); case 3: data=data*atof(m_jisuan); case 4: if(atof(m_jisuan)=0) MessageBox(ERROR); else data=data/atof(m_jisuan); c
7、har Drray50; memset(Drray,0,50); sprintf(Drray,%f,data); m_jisuan=Drray; UpdateData(FALSE);4)编辑框的按钮的处理函数OnChangeEdit1() If this is a RICHEDIT control, the control will not / send this notification unless you override the CDialog:OnInitDialog() / function and call CRichEditCtrl().SetEventMask() / wit
8、h the ENM_CHANGE flag ORed into the mask.六:结论与心得体会 这次课程设计用MFC的相关知识编写一个小型计算器,刚开整个始感觉这个题目挺新鲜,很想好好尝试下,平时只知道用计算器,其中的原理却不甚了解。此次课程设计没有像上次那样尴尬,不知从何做起,可能是有了上次的经验。老师开始的讲解感觉作用挺大的,知道了从那块着手,编写的过程中不断出错,写的源代码总是找不到头文件,这是最让人郁闷的了。和同学的交流,探讨过程,是我对这学期学的类有了更深刻的了解。身边有很多高手的存在,通过他们的讲解很容易对整个过程熟悉,比上次好多了。七 .参考文献VisualC+7.0 实战
9、入口八 附录:调试及测试结果如上,关键源代码如下:#if !defined(AFX_1DLG_H_B53FAC72_C8D2_473B_BF3F_DF4E3D42EB50_INCLUDED_)#define AFX_1DLG_H_B53FAC72_C8D2_473B_BF3F_DF4E3D42EB50_INCLUDED_#if _MSC_VER 1000#pragma once#endif / _MSC_VER / CMy1Dlg dialogclass CMy1Dlg : public CDialog/ Constructionpublic: double data; int sign; C
10、My1Dlg(CWnd* pParent = NULL); / standard constructor/ Dialog Data /AFX_DATA(CMy1Dlg) enum IDD = IDD_MY1_DIALOG ; CString m_jisuan; /AFX_DATA / ClassWizard generated virtual function overrides /AFX_VIRTUAL(CMy1Dlg) protected: virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV support /AFX_VIRTUAL/ Implementationprotected: HICON m_hIcon; / Generated message map functions /AFX_MSG(CMy1Dlg);/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional declarations immediately before the previous line.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1