吕鑫mfc视频第二章答案之计算器

上传人:mg****85 文档编号:34441979 上传时间:2018-02-24 格式:DOC 页数:13 大小:165.50KB
返回 下载 相关 举报
吕鑫mfc视频第二章答案之计算器_第1页
第1页 / 共13页
吕鑫mfc视频第二章答案之计算器_第2页
第2页 / 共13页
吕鑫mfc视频第二章答案之计算器_第3页
第3页 / 共13页
吕鑫mfc视频第二章答案之计算器_第4页
第4页 / 共13页
吕鑫mfc视频第二章答案之计算器_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《吕鑫mfc视频第二章答案之计算器》由会员分享,可在线阅读,更多相关《吕鑫mfc视频第二章答案之计算器(13页珍藏版)》请在金锄头文库上搜索。

1、吕鑫 MFC 视频第二章答案之计算器按照题目要求做一个计算器可以进行加减乘除四项运算,我还照着 window 系统本身计算器的那样来做,增加了清屏,清行,以及删除,并且支持浮点数运算。使用的是 vs2013.如果发现错误,请大家多多指正!项目下载 http:/ 7ed8程序下载 http:/ 8436首先建立一个工程,我建立的工程名为“cal” ,选择对话框程序,然后建立按钮,编辑框进行界面布置 ,这个随意 id 设置自己知道就行了,我的 id 为上面的编辑框为: IDC_UP,属性多行,垂直滚动条,垂直滚动条居左,文本居右,禁止输入;下面的编辑框 id 为:IDC_DOWN,属性禁止输入,文

2、本居右,数字按钮id 等于 IDC_(数字的英语单词) ,等于 id 为:IDOK,小数点:IDC_DOT ,加:IDC_ADD,减:IDC_MINUS,乘:IDC_MULTIPLY,除:IDC_REMOVE,CE:IDC_CE ,C:IDC_C,:IDC_DELETE, ,把对话框禁止改变大小,只使用最小化,最大化不适用,然后创建函数,这些不清楚的在看看吕老师的视频。头文件/ calDlg.h : 头文件/#pragma once/ CcalDlg 对话框class CcalDlg : public CDialogEx/ 构造public:CcalDlg(CWnd* pParent = NU

3、LL); / 标准构造函数/ 对话框数据enum IDD = IDD_CAL_DIALOG ;protected:virtual void DoDataExchange(CDataExchange* pDX); / DDX/DDV 支持/ 实现protected:HICON m_hIcon;/ 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()public:afx_msg void OnBnClickedOk();a

4、fx_msg void OnBnClickedC();afx_msg void OnBnClickedThree();afx_msg void OnBnClickedOne();afx_msg void OnBnClickedTwo();afx_msg void OnBnClickedDelete();afx_msg void OnBnClickedCe();afx_msg void OnBnClickedFour();afx_msg void OnBnClickedFive();afx_msg void OnBnClickedSix();afx_msg void OnBnClickedSev

5、en();afx_msg void OnBnClickedEnght();afx_msg void OnBnClickedNine();afx_msg void OnBnClickedNull();afx_msg void OnBnClickedRemove();afx_msg void OnBnClickedMultiply();afx_msg void OnBnClickedMinus();afx_msg void OnBnClickedAdd();double m_dLeft,m_dRight;/左值和右值CString m_szUp, m_szDown;/上面编辑框和下面编辑框,上面用

6、于记录输入算式,下面用于接收输入BOOL m_bDot;int m_nCount;afx_msg void OnBnClickedDot();double sztod(CString str);/ afx_msg void OnSize(UINT nType, int cx, int cy);/ afx_msg void OnSize(UINT nType, int cx, int cy);/ afx_msg void OnSize(UINT nType, int cx, int cy);virtual BOOL PreTranslateMessage(MSG* pMsg);源文件/ calD

7、lg.cpp : 实现文件/#include stdafx.h#include cal.h#include calDlg.h#include afxdialogex.h#ifdef _DEBUG#define new DEBUG_NEW#endif/ CcalDlg 对话框CcalDlg:CcalDlg(CWnd* pParent /*=NULL*/): CDialogEx(CcalDlg:IDD, pParent)m_hIcon = AfxGetApp()-LoadIcon(IDR_MAINFRAME);void CcalDlg:DoDataExchange(CDataExchange* p

8、DX)CDialogEx:DoDataExchange(pDX);BEGIN_MESSAGE_MAP(CcalDlg, CDialogEx)ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDOK, &CcalDlg:OnBnClickedOk)ON_BN_CLICKED(IDC_C, &CcalDlg:OnBnClickedC)ON_BN_CLICKED(IDC_THREE, &CcalDlg:OnBnClickedThree)ON_BN_CLICKED(IDC_ONE, &CcalDlg:OnBnClickedOne)ON_BN_CLICKE

9、D(IDC_TWO, &CcalDlg:OnBnClickedTwo)ON_BN_CLICKED(IDC_DELETE, &CcalDlg:OnBnClickedDelete)ON_BN_CLICKED(IDC_CE, &CcalDlg:OnBnClickedCe)ON_BN_CLICKED(IDC_FOUR, &CcalDlg:OnBnClickedFour)ON_BN_CLICKED(IDC_FIVE, &CcalDlg:OnBnClickedFive)ON_BN_CLICKED(IDC_SIX, &CcalDlg:OnBnClickedSix)ON_BN_CLICKED(IDC_SEVE

10、N, &CcalDlg:OnBnClickedSeven)ON_BN_CLICKED(IDC_ENGHT, &CcalDlg:OnBnClickedEnght)ON_BN_CLICKED(IDC_NINE, &CcalDlg:OnBnClickedNine)ON_BN_CLICKED(IDC_NULL, &CcalDlg:OnBnClickedNull)ON_BN_CLICKED(IDC_REMOVE, &CcalDlg:OnBnClickedRemove)ON_BN_CLICKED(IDC_MULTIPLY, &CcalDlg:OnBnClickedMultiply)ON_BN_CLICKE

11、D(IDC_MINUS, &CcalDlg:OnBnClickedMinus)ON_BN_CLICKED(IDC_ADD, &CcalDlg:OnBnClickedAdd)ON_BN_CLICKED(IDC_DOT, &CcalDlg:OnBnClickedDot)/ ON_WM_SIZE()/ON_WM_SIZE()/ON_WM_SIZE()END_MESSAGE_MAP()/ CcalDlg 消息处理程序BOOL CcalDlg:OnInitDialog()CDialogEx:OnInitDialog();m_bDot = 1;/把值初始化为1,作用为防止一个数据输入多个小数点m_nCou

12、nt = 0;/用来判断运算符号,1为加,2为减,3为乘,4为除/ 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动/ 执行此操作SetIcon(m_hIcon, TRUE); / 设置大图标SetIcon(m_hIcon, FALSE); / 设置小图标/ TODO: 在此添加额外的初始化代码return TRUE; / 除非将焦点设置到控件,否则返回 TRUE/ 如果向对话框添加最小化按钮,则需要下面的代码/ 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序,/ 这将由框架自动完成。void CcalDlg:OnPaint()if (IsIconic()CPaint

13、DC dc(this); / 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc(), 0);/ 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;/ 绘制图

14、标dc.DrawIcon(x, y, m_hIcon);elseCDialogEx:OnPaint();/当用户拖动最小化窗口时系统调用此函数取得光标/显示。HCURSOR CcalDlg:OnQueryDragIcon()return static_cast(m_hIcon);void CcalDlg:OnBnClickedOk()/=按钮double dz;switch (m_nCount)/判断运算符case 1:/加法计算m_dRight = _tcstod(m_szDown, NULL);/字符串转doubledz = m_dLeft + m_dRight;/计算值m_szDown.

15、Format(_T(%lf), dz);/double 转字符串sztod(m_szDown);/调用函数去0m_dLeft = dz;/把计算的总值付给左值,以便连续运算m_dRight = 0;/右值清空break;case 2:m_dRight = _tcstod(m_szDown, NULL);dz = m_dLeft - m_dRight;m_szDown.Format(_T(%lf), dz);sztod(m_szDown);m_dLeft = dz;m_dRight = 0;break;case 3:m_dRight = _tcstod(m_szDown, NULL);dz = m_dLeft * m_dRight;m_szDown.Format(_T(%lf), dz);sztod(m_szDown);m_dLeft = dz;m_dRight = 0;break;case 4:m_dRight = _tcstod(m_szDown, NULL);dz = m_dLeft / m_dRight;m_szDown.Format(_T(%lf), dz);sztod(m_szDown);m_dLeft = dz;m_dRight = 0;break;void CcalDlg:OnBnClickedC()/C按钮把输入全部清空,并把记录的输入字符串也清空,就是仿wi

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 教育/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号