【基于VS2010的MFC编程】多功能计算器 您所在的位置:网站首页 怎么对计算器编程 【基于VS2010的MFC编程】多功能计算器

【基于VS2010的MFC编程】多功能计算器

2024-06-18 07:04| 来源: 网络整理| 查看: 265

平台/工具:VS2010 目的:利用VS2010平台创建一个MFC工程,实现多功能计算器的程序编写和界面设计 项目分析:首先是根据功能进行界面设计:需要一个供编辑和显示的编辑框 、多种运算符按钮(“+”“-”“×”“÷”“平方”“开方”“指数”“log”)、0~9数字按钮、“=”和“.”按钮、辅助功能按钮(“关于软件”“清零”“后退”);其次是添加一些类和功能代码” 方法步骤: Step 1: MFC工程创建部分 建立一个不使用Unicode库的MFC工程,工程命名为“多功能计算器”。 这里写图片描述 注意:Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。(百度百科) 但是使用该库时,汉字等字符需要在前面加上“_T”,比较麻烦,为了简便,不选择该库。 Step 2:主对话框设计部分 (1)建立好基于对话框的工程后,将默认主对话框上的几个控件均删除:删除“TODO: 在此放置对话框控件。” 删除“确定”“取消”按钮。 (2)添加编辑框(Edit Control)控件到主对话框顶部,用于显示用户的输入以及计算结果,拖动修改其大小;选中该编辑框->右键->添加变量->Control类别对应的变量类型为CEdit,变量名为m_edit, Value类别对应的变量类型为CString,变量名为m_str,如下两图所示: 这里写图片描述 这里写图片描述 (3)添加按钮控件到主对话框,调整按钮大小,为了保持大小一致,可以先添加一个按钮,然后复制粘贴。编辑按钮的Caption属性为适当的名字,数字按钮的ID改为IDC_NUM_0、IDC_NUM_1…… IDC_NUM_9;操作符按钮的ID改为IDC_ADD,IDC_DEC,IDC_MULTIPLY,IDC_DIVIDE (上述分别为“+”“-”“×”“÷”的ID),IDC_SQUARE,IDC_SQRT,IDC_EXP,IDC_LOG (上述为“平方”“开方”“指数”“log”的ID);“关于软件”的ID为IDC_ABOUT_BUTTON,“后退”的ID为IDC_BACK_BUTTON,“清零”的ID为IDC_CLEAR_BUTTON,“=”的ID为IDC_EQUAL,“.”的ID为IDC_DEMICAL。设计完成的主对话框如下图所示: 这里写图片描述

Step 3:代码添加部分 设计好主对话框后,开始双击按钮进入主程序中相应的位置,添加消息处理程序。 (1)首先在××Dlg.h(主程序头文件,××是你建立的工程名,如工程名为“多功能计算器”,则主程序头文件为“多功能计算器Dlg.h”)中主对话框类中的公有成员(public:)中添加代码,如下图所示,红框内为手动添加的代码: 这里写图片描述 (2)在××Dlg.cpp主程序中添加如下代码: ①在程序顶部包含cmath头文件:#include “cmath”(因为开方函数sqrt()、指数函数pow()需要该头文件) ②在初始化函数BOOL C多功能计算器Dlg::OnInitDialog()中添加m_edit.SetWindowText(“”);将编辑框初始化为空 这里写图片描述 ③双击主对话框中的按钮,主程序会自动添加其消息响应函数,在函数体中添加实现代码: A、“关于软件”按钮的代码:

void C多功能计算器Dlg::OnBnClickedAboutButton() //“关于软件”按钮 { // TODO: 在此添加控件通知处理程序代码 //----添加的代码----------------- CAboutDlg dlg; dlg.DoModal(); //此处没有做过多的编辑,直接调用MFC程序创建时系统自动生成的“关于”对话框 //-------------------------------- }

B、“后退”按钮的代码:

void C多功能计算器Dlg::OnBnClickedBackButton() //“后退”按钮 { // TODO: 在此添加控件通知处理程序代码 //---------添加的代码------ UpdateData(TRUE); if (!m_str.IsEmpty()) { m_str = m_str.Left(m_str.GetLength()-1); //移除最右边一个字符 } UpdateData(FALSE); //-------------------------- }

C、“清零”按钮的代码:

void C多功能计算器Dlg::OnBnClickedClearButton() //“清零”按钮 { // TODO: 在此添加控件通知处理程序代码 //------------添加的代码------------ UpdateData(TRUE); m_str = ""; //将对话框设为空,即达到清零的效果 UpdateData(FALSE); //----------------------------------- }

D、四则运算符(“+”“-”“×”“÷”)按钮的代码:

void C多功能计算器Dlg::OnBnClickedAdd() //“+”按钮 { // TODO: 在此添加控件通知处理程序代码 //----添加的代码------------ SaveValue1(); //执行SaveValue1()函数,保存第一个数值并在按下操作符按钮后、第二个数值输出之前使编辑框空白 m_iSign = 0; //“+”的标志,用于Calculator()函数中case的跳转判断 //---------------------------- } void C多功能计算器Dlg::OnBnClickedDec() //“-”按钮 { // TODO: 在此添加控件通知处理程序代码 //----添加的代码------------ SaveValue1(); m_iSign = 1; //“-”的标志,用于Calculator()函数中case的跳转判断 //---------------------------- } void C多功能计算器Dlg::OnBnClickedMultiply() //“×”按钮 { // TODO: 在此添加控件通知处理程序代码 //----添加的代码------------ SaveValue1(); m_iSign = 2; //“×”的标志,用于Calculator()函数中case的跳转判断 //---------------------------- } void C多功能计算器Dlg::OnBnClickedDivide() //“÷”按钮 { // TODO: 在此添加控件通知处理程序代码 //----添加的代码------------ SaveValue1(); m_iSign = 3; //“÷”的标志,用于Calculator()函数中case的跳转判断 //---------------------------- }

E、“平方”“开方”“指数”“log”按钮的代码:

void C多功能计算器Dlg::OnBnClickedSquare() //“平方”按钮 { // TODO: 在此添加控件通知处理程序代码 //----------添加的代码---------------- UpdateData(TRUE); m_fNumber1 = atof(m_str); //由于只有一个操作数,因此不需要等到“=”按下时才在编辑框显示结果,因此不用添加到Calculator()函数中 double f = m_fNumber1 * m_fNumber1; //如果浮点数其实是个整数 if(f - int(f)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有