学习最有效的方法就是实战,这两篇文章写了做MFC加减乘除计算器的过程。

第一写前台MFC界面搭建,第二写后台计算原理及代码。

MFC编程参考教程:http://www.jizhuomi.com/school/c/149.html

第二篇文章链接:C++做四则运算的MFC计算器(二)栈转换和计算后缀表达式

  搭建MFC项目

以VS2017为例,新建项目->MFC项目,写名字,设路径

应用程序类型,选择基于对话框的,其他默认即可,直到最后一步

生成的类选择Dlg

完成后,项目里会有很多自动添加的资源

.ico是图标,随便玩。

.rc和.rc2:rc2文件包含项目使用的附加资源的脚本文件。可以在项目的 .rc 文件的顶部包括 .rc2 文件。 .rc2 文件用于存放由多个不同项目使用的资源。不必为不同的项目多次创建相同的资源,而是可以将它们放在一个 .rc2 文件中,然后将该 .rc2 文件包括在主 .rc 文件中。双击都会调到资源视图,在这编辑界面。

Dialog就是主要编辑的地方,ABOUTBOX是帮主窗口,MFCCALCULATION_DIALOG是主要窗口

那怎么加东西呢?在工具箱里,工具箱一般在侧面的一个犄角格拉里,竖着的,里面有各种组件,感兴趣的玩玩看。

此处用button按钮、Edit Control编辑框和static text静态文本就够了。

把button拖到界面上,再按Ctrl拖能复制,数字0-9、+、-、*、/、(、)、删除、清空和 =,19个按钮。用参考线(格式->参考线设置)布局更方便。

右键按钮->属性,显示控件的各种属性,其中Caption属性是按钮的内容,写“1”按钮就显示“1”,窗口的Caption就是窗口的标题。每个控件的ID属性是独立的,用默认生成的就行,也可以自己编写。

  按钮事件

“删除”按钮点一次删除一个字符,“清空”按钮就是清空,其他按钮每点一次,表达式编辑框就加一个字符

先为编辑框创建“值”变量、“控件”变量来控制内容,简单地理解:“值”给“控件”就会显示。右键表达式编辑器->添加变量

“值”类别是编辑框要现实的内容,名称为editv。再以同方法建“控件”类别的变量editc。

计算结果框也要有“值”变量和“控件”变量,分别是resultv、resultc。

接下来为每个按钮单击时显示到编辑框中。

双击按钮,自动添加单击事件的函数,并跳转到MFCcalculationDlg.cpp,

使用UpdateData(false)将变量值给控件,要反过来把false改成true,这个后面会用到。为每个按钮添加对应的函数。

实现删除使用editv = editv.Left(editv.GetLength() - 1),Left(n)取左边n个字符,editv.GetLength()取editv的长度,长度-1就删掉最后一个。

实现清空使用editv = "";

“=”的功能是将控件的值传给变量,再调用其他计算函数计算,把计算结果传给另一个编辑框中。在这里先实现显示计算表达式。

调试结果是这个样子的:

第二篇文章:C++做四则运算的MFC计算器(二)栈转换和计算后缀表达式

C++做四则运算的MFC计算器(一)MFC界面创建的更多相关文章

  1. C++做四则运算的MFC计算器(二)栈转换和计算后缀表达式

    上篇写了MFC界面搭建,这篇就写实现计算.涉及到数据结构,对新手很不友好. 虽然是MFC程序,但是能灵活地分离后台代码,自行构建控制台程序. 上篇文章链接:C++做四则运算的MFC计算器(一)MFC界 ...

  2. [Sciter系列] MFC下的Sciter–1.创建工程框架

    Sciter SDK中提供的Win32下例程很多,唯独使用很多(对我个人而言)的MFC框架下Sciter程序的构建讲的很少,虽然MFC有这样那样的诟病,但是不可否认的是编写一般的小项目,这仍然是大多数 ...

  3. [Sciter系列] MFC下的Sciter–1.创建工程框架

      Sciter SDK中提供的Win32下例程很多,唯独使用很多(对我个人而言)的MFC框架下Sciter程序的构建讲的很少,虽然MFC有这样那样的诟病,但是不可否认的是编写一般的小项目,这仍然是大 ...

  4. 在MFC[转载]在MFC状态栏显示时间 状态栏显示时间

    原文:在MFC状态栏显示时间,谢小哈皮儿 c/c++ vc 在mfc状态栏显示时间,在VC的控件中有个Status bar可以在窗体状态栏中添加日期和时间.其实通过简单的代码,你就能创建一个有时钟显示 ...

  5. 让MFC程序隐藏运行界面

    在MFC中隐藏运行界面确实花花点功力. 针对对话框程序,一种不是很好地实现方法是在OnPaint函数中添加如下代码: CWnd::ShowWindow(SW_HIDE); 添加后执行会发现屏幕会闪烁一 ...

  6. VC/MFC如何添加启动界面

    2015-05 转自 香远益清原文VC/MFC如何添加启动界面 1.基于框架类的应用程序添加启动画面的步骤(利用组件库中的Splash Screen组件生成Splash1.cpp 和Splash1.h ...

  7. Dynamic Property Wizard 添加类提示 ATL类只能添加到MFC EXE 和MFC规则DLL项目或完全支持ATL的项目 错误提示解决方式

    在重新打开OPM项目添加ATL动态属性向导Dynamic Property Wizard提示错误 ATL类只能添加到MFC EXE 和MFC规则DLL项目或完全支持ATL的项目. 有效的解决方式,右键 ...

  8. JAVA实现四则运算的简单计算器

    开发环境eclipse java neon. 今天用JAVA的swing界面程序设计制作了一个四则运算的简易计算器.代码以及截图如下: computer.java: ///////////////// ...

  9. 用面向对象的方式操作 JSON 甚至还能做四则运算 JSON 库

    前言 在之前实现的 JSON 解析器中当时只实现了将一个 JSON 字符串转换为一个 JSONObject,并没有将其映射为一个具体的 struct:如果想要获取值就需要先做断言将其转换为 map 或 ...

随机推荐

  1. polygon()函数

    polygon():draw the polygons where vertices are given in x and y. polygon(x,y=NULL,density=NULL,angle ...

  2. Nginx配置详细解析(全)

    一.nginx.conf文件结构 (1)共三部分:由全局块.events块.http块组成.http块又包含http全局块.server块:server块由多个location块组成. (2)一般情况 ...

  3. jQuery实现倒计时重新发送短信验证码功能示例

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  4. Spring 之初识IOC和DI

    下载Spring jar包 Spring官网 下载地址 Sping核心jar包 IOC简介 IOC:控制反转,指以前程序自己创建对象,现在将创建对象的控制权交给了第三方(Spring)了 IoC底层实 ...

  5. 使用 SecureRandom 产生随机数采坑记录

    公众号「码海」欢迎关注 背景 我们的项目工程里经常在每个函数需要用到 Random 的地方定义一下 Random 变量(如下) public void doSomethingCommon() { Ra ...

  6. 大型情感剧集Selenium:8_selenium网页截图的四种方法

    有时候,有时候,你会相信一切有尽头-当你的代码走到了尽头,那么保留最后一刻的状态尤为重要,此时你该如何操作?记录日志-没有将浏览器当前的状态进行截图来的直观! 那么,selenium截取截屏,有哪些方 ...

  7. luogu P2401 不等数列 |动态规划

    题目描述 将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入">"和"<".问在所有排列中,有多少个排列恰好有k个"< ...

  8. 2018 CCPC秦皇岛 C题 Crusader Quest

    Crusaders Quest is an interesting mobile game. A mysterious witch has brought great darkness to the ...

  9. HDU 1808 Halloween treats

    Every year there is the same problem at Halloween: Each neighbour is only willing to give a certain ...

  10. tensorflow add_to_collection用法

    训练代码: # coding: utf-8 from __future__ import print_function from __future__ import division import t ...