ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:185.57KB ,
资源ID:1160013      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1160013.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(MFC计算器课程设计报告.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

MFC计算器课程设计报告.docx

1、MFC计算器课程设计报告MFC表达式计算器课程设计报告题目:利用MFC框架编写简易表达式计算器【分析】一设计过程1.Windows消息处理机制的理解 首先编写程序需要对Windows程序的消息处理机制(Message Handle)有个比较清晰的了解。Windows的程序都是通过消息来传送数据,有不需要用户参与的系统消息,比如异常处理等。还有用户消息,比如鼠标的单击,双击,键盘的键入等。2.界面的设计1)界面的初步设计仿照Windows附件里面的计算器,在资源视图中画好界面,如图:2)修改每个static的属性IDCAPTIONIDD_STATIC4简易表达式计算器 IDC_STATIC1待求

2、表达式IDC_STATIC2运算结果IDC_STATIC3系统当前时间3)修改每个button的属性IDC_BUTTON1等于(=)IDC_BUTTON2全清(C)IDC_BUTTON3清除 (A)结果如下图:4)修改每个button的处理机制在类向导Classwizard窗口中进行,如下图:其他button按钮的修改类似5)修改每个edit的类型和名称在类向导Classwizard窗口中进行:单击Add Variable按钮,在如下窗口中进行修改其他edit的修改类似最终结果如下:注:主要使用到Layout菜单中的Align功能对各个按钮进行对齐,使界面更加整洁。拖出的控件有上面的一个Edi

3、t控件用于显示数字,Button控件用于处理鼠标的消息。6)系统菜单的添加在Menu的IDR_MENU1中添加系统菜单:同理在“帮助”菜单中添加“关于”。二 设计步骤1. 添加头文件将Calculate.cpp(见附录)改为Calculate.h将其添加到计算器Dlg.cpp : implementation file中,如下:#include Calculate.h。2.成员函数及其释义:void CAboutDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CAboutDlg)

4、 /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CAboutDlg, CDialog) /AFX_MSG_MAP(CAboutDlg) /AFX_MSG_MAPEND_MESSAGE_MAP()/ CMyDlg dialogCMyDlg:CMyDlg(CWnd* pParent /*=NULL*/) : CDialog(CMyDlg:IDD, pParent) /AFX_DATA_INIT(CMyDlg) / NOTE: the ClassWizard will add member initialization here /AFX_DATA_INIT / Note that

5、LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CMyDlg:DoDataExchange(CDataExchange* pDX) CDialog:DoDataExchange(pDX); /AFX_DATA_MAP(CMyDlg) DDX_Control(pDX, IDC_EDIT3, m_time); DDX_Control(pDX, IDC_EDIT2, m_result); DDX_Control(pDX, IDC

6、_EDIT1, m_input); /AFX_DATA_MAPBEGIN_MESSAGE_MAP(CMyDlg, CDialog) /AFX_MSG_MAP(CMyDlg) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, OnButton1) ON_BN_CLICKED(IDC_BUTTON2, OnButton2) ON_WM_TIMER() ON_BN_CLICKED(IDC_BUTTON3, OnButton3) ON_COMMAND(ID_ABOUT, OnAbout)

7、ON_COMMAND(ID_QUIT, OnQuit) /AFX_MSG_MAPEND_MESSAGE_MAP()/ CMyDlg message handlers3.OnButton1()按钮的处理函数双击“等于(=)”按钮,添加如下代码:void CMyDlg:OnButton1() / TODO: Add your control notification handler code here CString str; char *ch; m_input.GetWindowText(str); ch = (LPSTR)(LPCTSTR)str; char ch250; strcpy(ch2

8、,ch); Cal a(ch2); if(!a.OK) m_result.SetWindowText(表达式不合法!);/ 表达式不合法,判别出来并给出相应的错误提示 else if(a.Sign) m_result.SetWindowText(除数为零!);/ 表达式不合法,可以判别出来并给出相应的错误提示 else str.Format(%lf,a.GetV(); m_result.SetWindowText(str); 以OnButton1()作为求值处理函数,函数的功能是单击等于(=)按钮,运算结果显示在IDC_EDIT2中4.OnButton2()按钮的处理函数双击“清除(C)”按钮

9、,添加如下代码:void CMyDlg:OnButton2() / TODO: Add your control notification handler code here m_result.SetWindowText(0); m_input.SetWindowText(); m_input.SetFocus(); / 函数的功能是把上次输入的表达式清空5.OnButton3()按钮的处理函数双击“全清(A)”按钮,添加如下代码:void CMyDlg:OnButton3() / TODO: Add your control notification handler code here m_

10、input.SetWindowText(); m_input.SetFocus(); /函数的功能是把上次输入的表达式和运算结果都清除6.OnTimer(UINT nIDEvent) 处理函数CWnd:SetTimer(1,500,NULL);/设置时间每隔500ms更新一次。void CMyDlg:OnTimer(UINT nIDEvent) / TODO: Add your message handler code here and/or call default CString ch = 日,一,二,三,四,五,六; SYSTEMTIME st; :GetLocalTime(&st);

11、CString str_temp; str_temp.Format(%u/%u/%u 星期+chst.wDayOfWeek+ %u:%u:%un,st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond); m_time.SetWindowText(str_temp); CDialog:OnTimer(nIDEvent);/函数的功能是把运算结果显示在IDC_EDIT3中7.OnAbout()处理函数void CMyDlg:OnAbout() / TODO: Add your command handler code here CAbo

12、utDlg about; about.DoModal();/关于帮助和版权信息8.OnQuit()处理函数void CMyDlg:OnQuit() / TODO: Add your command handler code here OnOK();/退出主程序菜单9.全部代码如下:/ 计算器Dlg.cpp : implementation file/#include stdafx.h#include 计算器.h#include 计算器Dlg.h#include Calculate.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic

13、 char THIS_FILE = _FILE_;#endif/ CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialogpublic: 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(CAboutDlg) /AFX_MSG DECLARE_MESSAGE_MAP();CAboutDlg:CAboutDlg() : CDialog(CAboutDlg:IDD) /AFX_DATA_INIT(CAboutDlg) /AFX_DATA_INITvoid CAboutDlg:DoDataE

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1