学习最有效的方法就是实战,这两篇文章写了做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. 【洛谷P1835】素数密度

    题目描述: 给定区间[L,R](L≤R≤2147483647,R-L≤1000000),请计算区间中素数的个数. 思路: 暴力: 蒟蒻:哦?绿题?这么水?(便打出下面代码) 这绝对是最容易想到的!但, ...

  2. appium环境的搭建

    appium环境的搭建,之前看过很多关于appium环境搭建的文章,一个感觉就是“乱”. 所以才想自己来写一篇appium环境的搭建,算是总结和备忘吧. 如下图,其实appium的搭建分三部分完成,各 ...

  3. Authentication 接口验证访问 (C#)

    private HttpClient _httpClient = new HttpClient(); private string PostToOwner(CarOwnerCoupon postDat ...

  4. Spring Security OAuth2 Demo —— 授权码模式

    本文可以转载,但请注明出处https://www.cnblogs.com/hellxz/p/oauth2_oauthcode_pattern.html 写在前边 在文章OAuth 2.0 概念及授权流 ...

  5. “智慧海绵城市”(SSC)监测评价体系整体解决方案

    一.方案简介 无论是内涝防治.黑臭水体治理,还是海绵城市规划设计及建设.评估,乃至未来智慧城市的建设,都需要有全面.致密.大量的城市水文监测数据和先进模拟仿真技术作基础支撑,唯有如此,决策才有据可依, ...

  6. 卸载&&更新docker(ubuntu)

    卸载docker: apt-get purge lxc-docker apt-get autoremove 更新docker: apt-get update apt-get install lxc-d ...

  7. 使用Python进行防病毒免杀

    很多渗透工具都提供了权限维持的能力,如Metasploit.Empire和Cobalt Strike,但是都会被防病毒软件检测到这种恶意行为.在探讨一个权限维持技巧的时候,似乎越来越多的人关注的是,这 ...

  8. JSTL学习

    基本标签: out标签:<c:out value="${表达式}" default="默认值"></c:out> 作用:结合EL表达式将 ...

  9. dockerfile 最佳实践及示例

    Dockerfile 最佳实践已经出现在官方文档中,地址在 Best practices for writing Dockerfiles.如果再写一份最佳实践,倒有点关公门前耍大刀之意.因此本篇文章是 ...

  10. Atoder-3620

    The season for Snuke Festival has come again this year. First of all, Ringo will perform a ritual to ...