mfc入门教程之实现一个简单的计算器

mfc学习之前的了解

什么是mfc?
MFC是微软基础类的缩写(Microsoft Foundation Classes),是一个庞大的类库,可以理解为一种在Windows上开发软件的架构,是微软专为Visual C++定制的。该类库提供一组通用的可重用的类库供开发人员使用。
没有MFC之前,Windows上用Win32 API进行编程,之后MFC出现,在一定程度上提高了软件开发效率,它是对win32 API的封装,所以易用性好,不过性能会比win32开发低一些,二者各有所长。
在Windows上开发界面程序以前用MFC最合适,能兼顾效率和性能。
简单来说mfc就是方便windows程序开发的框架,不单单是界面,更有很多类库。
mfc能干什么?
在学习mfc之前想必大家都会关系这个问题,很多人学习了c++,或者是学习了c和c++之后发现还是只能黑窗口下面做做数学题,写写算法,做不出什么实际的东西(这里不是说c/++做不出实际的东西,而是大多数的人做不出)。
问这个问题就像问一把剪刀能干什么,剪刀什么也干不了,我们可以拿着剪刀剪东西,剪的好坏更多的是在于使用者而不是工具本身。当使用一件工具熟练之后去使用同类的工具你会发现很轻松就能上手,因为它们看似有区别实则万变不离其宗。

mfc和qt的选择

很多人会去推荐学习qt说mfc过时了,如果你想要跨平台那么qt非你莫属,如果只是在windows上,那么mfc无可替代。无论是qt还是mfc在windows平台上内部的实现原理都是一样的,只是封装上有些区别。

mfc制作简单计算器-界面设计

1.新建mfc项目

启动vs2013,点击文件->新建->项目->vc++->mfc应用程序

点击确定进入mfc应用程序向导

下一步

选择基于对话框,点击完成。

这时候mfc为我们生成了默认的界面,一个静态文本框,两个按钮。

2.计算器界面设计

首先删除三个默认创建的控件,选中之后右键,删除或者直接按下delete键。
然后把界面设计为下图:

五个Static Text(静态文本框) 四个Edit Control(编辑框),一个Button (按钮)
点击左侧的工具箱,从中可以找到,

选择Static Text,右键->属性,在右下角可以看到属性面板,直接修改Caption就可以修改它的显示文本了。Button显示文本的修改同理。

修改完成之后按下ctrl+f5可以直接运行,这时候我们输入1+1,点击计算是没有任何效果的,我们还没有写一行代码,下节用代码实现计算功能。

mfc制作简单计算器-代码实现

上节我们把界面设计好了,这节我们代码实现计算功能,在实现计算功能之前我们需要考虑几个问题

1.如何获取三个编辑框的内容
2.如何判断第二个编辑框的内容(+ - */)
3.如何把结果显示到第三个编辑框

还有就是如何在按钮按下之后执行上面的这些操作呢?
带着这些问题我们开始完成这个计算器程序,在完成的过程中会把这些问题全部解决。

按钮的消息:

想要在按钮按下之后执行某些操作就要添加消息处理,什么是消息?这里不会长编大论的讨论这个问题,简单理解就是按钮按下之后会告诉系统,但是并不是说"我被按下了",而是告诉系统 BN_CLICKED ,BN_CLICKED就是按钮被单击发送的消息,系统接收到BN_CLICKED就会知道按钮被按下。
添加消息处理函数:
如果想要在系统接收到BN_CLICKED的时候就需要添加对这个消息的处理函数,也就是这个消息触发的时候执行的函数,添加方法:
选择按钮,右键->添加事件处理程序,

选择对应的消息类型,添加编辑。

或者在右下角属性面板点击控件事件 “⚡”符号,

添加完成之后会跳转到这个消息处理函数,我们在函数里面所写的代码就行这个消息触发时所执行的代码。

我们就在这个函数里面实现计算,首先获取三个编辑框的内容,判断第二个编辑框的内容(+ - */),然后进行计算,最后把结果显示到第三个编辑框,完成计算器程序。

1.获取三个编辑框的内容
获取控件内容我们可以用GetDlgItemText()函数来获取,函数有两个参数,第一个参数是控件的ID,第二个参数是CString类型的变量。
控件的ID,选中控件之后可以在属性面板找到ID
CString,是封装好的字符串处理类
获取三个编辑框内容的代码:

CString str1, str2, str3;
GetDlgItemText(IDC_EDIT1, str1);
GetDlgItemText(IDC_EDIT2, str2);
GetDlgItemText(IDC_EDIT1, str3);

2.判断第二个编辑框的内容(+ - */)

//_T是一个宏,作用是让你的程序支持Unicode编码。
  if (str2 != _T(""))
  {
    if (str2 == _T("+"))
    {

    }
    else if (str2 == _T("-"))
    {

    }
    else if (str2 == _T("*"))
    {

    }
    else if (str2 == _T("/"))
    {

    }
    else
    {
    }
  }

3.进行计算
用上面简单的if可以完成对运算符的判断,根据运算符的不同就行不同的计算,在计算之前我们需要对str1和str3进行类型转换

int number1, number2, result;
number1 = _ttoi(str1);
number2 = _ttoi(str3);

计算:

int number1, number2, result;
  number1 = _ttoi(str1);
  number2 = _ttoi(str3);
  if (str2 != _T(""))
  {
    if (str2 == _T("+"))
    {
      result = number1 + number2;
    }
    else if (str2 == _T("-"))
    {
      result = number1 - number2;
    }
    else if (str2 == _T("*"))
    {
      result = number1* number2;
    }
    else if (str2 == _T("/"))
    {
      result = number1 / number2;
    }
    else
    {
      MessageBox(_T("运算符输入有误!"));
    }
  }

MessageBox 弹出一个信息框,参数有多种形式,上面用的最简单的一直,参数内容就是弹出内容。
4.把结果显示到第三个编辑框

str1.Format(_T("%d"), result);
SetDlgItemText(IDC_EDIT4,str1);

Foemat()是str的方法,类似于sprintf
SetDlgitemText()设置控件文本,参数同GetDlgItemText

现在代码写好了可以运行看下:

mfc制作简单计算器-控件变量

上节已经实现了简单的计算器,但是我们还可以用另外一种简单的方法来实现。
我们可以添加控件变量,让控件变量直接进行计算。

控件变量的添加:
选中控件,右键->添加控件变量

我们要注意控件变量的类别,Control控件类型的变量,代表整个控件,而Value是控件的数据类型,我们这个计算器程序显然是Value类别的变量更加合适。

变量类型选int,变量名输入munber1 ,点击完成,添加成功,按照这个方法继续给剩下的编辑框添加 变量number2,result,然后给存放运算符的编辑框添加:

Value类别,CString类型,最大字符数为1,变量名为_operator。
按钮的BN_CLICKED消息处理代码改为:

void C简单计算器Dlg::OnBnClickedButton1()
{
    // TODO: 在此添加控件通知处理程序代码
    UpdateData(true);
    if (_operator !=_T("") )
    {
        if (_operator == _T("+"))
        {
            result = number1 + number2;
        }
        else if (_operator == _T("-"))
        {
            result = number1 - number2;
        }
        else if (_operator == _T("*"))
        {
            result = number1* number2;
        }
        else if (_operator == _T("/"))
        {
            result = number1 / number2;
        }
        else
        {
            MessageBox(_T("运算符输入有误!"));
        }
    }

    UpdateData(false);
}

UpdateData()函数用来刷新数据,参数为true从控件更新到控件变量,参数为false从零件变量更新到控件显示。

程序运行效果:

好了,这篇文章就介绍到这了,感谢作者的文章.

(0)

相关推荐

  • mfc入门教程之实现一个简单的计算器

    mfc学习之前的了解 什么是mfc? MFC是微软基础类的缩写(Microsoft Foundation Classes),是一个庞大的类库,可以理解为一种在Windows上开发软件的架构,是微软专为Visual C++定制的.该类库提供一组通用的可重用的类库供开发人员使用. 没有MFC之前,Windows上用Win32 API进行编程,之后MFC出现,在一定程度上提高了软件开发效率,它是对win32 API的封装,所以易用性好,不过性能会比win32开发低一些,二者各有所长. 在Windows

  • MyBatis入门实例教程之创建一个简单的程序

    准备: (1) IDEA 2021 (2)Java 1.8 (3)数据库 MySQL 5.7 (SQLyog 或 Navicat) 在 MySQL 中创建数据库 mybatisdemo,编码为 utf8 新建表: USE mybatisdemo CREATE TABLE users( uid INT PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(20) NOT NULL, uage INT NOT NULL ); INSERT INTO users(uid,

  • mfc入门教程之通过控制变量制作计算器

    mfc学习之前的了解 什么是mfc? MFC是微软基础类的缩写(Microsoft Foundation Classes),是一个庞大的类库,可以理解为一种在Windows上开发软件的架构,是微软专为Visual C++定制的.该类库提供一组通用的可重用的类库供开发人员使用. 没有MFC之前,Windows上用Win32 API进行编程,之后MFC出现,在一定程度上提高了软件开发效率,它是对win32 API的封装,所以易用性好,不过性能会比win32开发低一些,二者各有所长. 在Windows

  • 如何利用python的tkinter实现一个简单的计算器

    做一个计算器,这是我想要达成的效果: 在按下按钮或者按下键盘的时候,第一行输入框会显示输入的内容,第二行显示框则会预览运算结果,如果发生异常,输入内容格式错误,无法计算,则显示框显示"错误". 按"="按钮或按键回车计算结果,结果显示在第一行. 1.准备工作 导入库 tkinter import tkinter as tk 2. 开始 定义两个变量: equal_is=False #定义一些变量 textchange='' equal_is 用于判断是否已经计算出结

  • Java Swing编写一个简单的计算器软件

    目录 实现要求 实现代码: 实现要求 1.使用Java图形界面组件设计软件,界面如图所示. 2.软件能够满足基本的"加.减.乘.除"等运算要求. 3.程序代码清晰,语法规范,结构合理,逻辑正确. 4.编辑菜单中包括"复制和粘贴"两个菜单项,为菜单项编写事件代码. 实现代码: import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; impo

  • nodejs教程之制作一个简单的文章发布系统

    前言 我们今天就来做一个简单的新闻发布系统,系统第一阶段不需要太难,主要有以下功能 ① 新闻类型管理 ② 新闻管理(具有图片上传功能) ③ 新闻浏览 功能虽然不多,但是也涵盖很多基本操作了,程序不过增删查改嘛,外加上传附件,够了.于是开始我们今天的学习吧 准备工作 根据昨天的折腾后,我们已经有了nodeJS与mongoDB环境了,现在直接新建工程文件与数据库文件即可 第一步,打开命令符切换到D盘后输入 复制代码 代码如下: D:\>express -e news 于是系统会自动开开心心构建基本环

  • 用js编写的简单的计算器代码程序

    最近编写的一个简单的计算器代码程序,先给大家展示一下 分享代码如下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta htt

  • JavaScript编写简单的计算器

    本文实例讲述了JavaScript编写简单计算器的代码.分享给大家供大家参考.具体如下: 运行效果截图如下: 具体代码如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>计算器</title> <style> /*Basic reset*/ *{ margin:0; padding:0; b

  • javascript写的简单的计算器,内容很多,方法实用,推荐

    最近用javascript写了一个简单的计算器,自己测试感觉还好,先给大家观赏下界面: 界面就是这样了,但是功能如何呢? 现在只是个简单的标准计算器,能进行加减乘除连续运算,以及求余运算.如果发生被除数为零的错误,下面会给出提示,就像这样: 自己不知道写的怎么样,但是对于新手来说,这肯定是一份大餐,里面可以接触到的东西不少,可以拿来学习.如果有高手看出里面的疏漏.错误等望不吝赐教,给予指点. 下面贴上代码,希望里面的注释足够多了. js部分: 复制代码 代码如下: var num=0,resul

  • Android中使用GridLayout网格布局来制作简单的计算器App

    关于GridLayout 在android4.0版本之前,如果想要达到网格布局的效果,首先可以考虑使用最常见的LinearLayout布局,但是这样的排布会产生如下几点问题: 1.不能同时在X,Y轴方向上进行控件的对齐. 2.当多层布局嵌套时会有性能问题. 3.不能稳定地支持一些支持自由编辑布局的工具. 其次考虑使用表格布局TabelLayout,这种方式会把包含的元素以行和列的形式进行排列,每行为一个TableRow对象,也可以是一个View对象,而在TableRow中还可以继续添加其他的控件

随机推荐