MFC计算器按钮代码怎么写,比如我按了按钮数字键1,那怎么把它显示在编辑框你输入的是1,还有加减乘除 10

voidCMyDlg::OnButton1(){intm_edit=7;m_l.Format("%d",s);UpdateData(FALSE);这样不对,最后一个我知道... void CMyDlg::OnButton1()
{ int m_edit=7;
m_l.Format("%d",s);
UpdateData(FALSE);这样不对,最后一个我知道是将m_edit中的字符串写入编辑框中}
int a=7;
m_a.Format("%d",a);
UpdateData(FALSE);我用了这个可以的,能输入数字7,然是我把相同的程序区做数字8的代码的时候就出错了,后来我发现数字7的Type是CString,而数字8的Type是CButton
展开
 我来答
藤原子大雄
推荐于2018-02-02 · TA获得超过7197个赞
知道大有可为答主
回答量:6977
采纳率:82%
帮助的人:1757万
展开全部

。我这是抛砖引玉,很多功能没有,请大家不要见怪。言归正传,教程开始!

第一章 界面

打开VS2012(什么版本无所谓,思路都一样),新建一个MFC应用程序,输入工程名,选择保存目录,点击确定。注意,工程名字不要带中文字符,即使VS识别,这是一个良好的习惯。如图1.1

图1.1

点击确定后,出现MFC应用程序向导,第一页是概述,显示当前默认的要建立的应用程序设置,这里如果是基于对话框的应用程序,就可以直接点击完成了,不过还是建议大家一步一步的自己设置。如图1.2

图1.2

点击下一步,是设置应用程序类型的,是单文档(SDI),多文档(MDI),还是基于对话框的。那么什么是单文档程序呢?简单的说就是只能同时打开一个的程序,比如我们的记事本程序,打开第二个的时候第一个会被关闭。什么是多文档程序呢?就是可以同时打开多个的程序(可多开),一般还可以同时处理多个文件,比如我们Word,浏览器等等。对话框程序呢?就是对话框程序啦,通常没有菜单和工具条,只有按钮等等控件,比如我们的Windows计算器。我们今天要做的计算器也是基于对话框的。选择好之后,点击下一步。如图1.3

图1.3

从上一步来到这里,此处是设置应用程序界面功能的,包括对话框标题,有无最大化,最小化按钮,程序运行是最大化显示还是最小化显示等等。设置好后点击下一步。如图1.4

图1.4

好了,直到上一步完成,就可以直接点击完成了。然后,按照我的样式或者自定义一个布局安放按钮和编辑框吧!如图1.5

图1.5

先忽略按钮禁用的问题,那是后期代码搞定的问题了。

有没有遇到问题呢?比如你的编辑框不能出滚动条?这个问题要设置编辑框的属性。我们要设置编辑框自动换行,并且垂直和水平滚动条都设为TRUE。注意,如果Multiline的值不是TRUE的话,两个滚动条不可设为TRUE。如图1.6

图1.6

第二章 实现代码

好了,界面已经完成,现在就是我们实现具体功能的时候了。首先是数字按键和运算符按键的实现。在资源编辑器下双击按钮VS会自动为这个按钮添加事件。如图2.1

图2.1

双击之后会跳到代码实现的cpp文件中,我们在这里写代码。那么数字按键和运算符按键都是怎么实现呢?没错,字符串追加!这里对编辑框内的字符串追加一个字符有两种方法,一种是为编辑框添加变量,一种是直接追加。这里为了教学,我都实现了下。

编辑框变量追加法:

在资源编辑器中,在欲添加变量的控件(这里是我们的编辑框,其他的控件一样的方法)上右击,选择添加变量选项。如图2.2

图2.2

然后在添加变量向导中输入变量名,这里我用的Result。如图2.3

图2.3

好了,假设你的按钮0是第21个,ID是IDC_BUTTON21,那么你双击它之后产生的响应函数应该是 void CCalcDlg::OnBnClickedButton21()。

具体代码:

void CCalcDlg::OnBnClickedButton21()

{

//按键0

UpdateData(TRUE);          //把编辑框显示的字符串传给相应的变量Result

Result+="0";                //在按下数字键的情况下,则在Result后加"0"         

UpdateData(FALSE);         //把Result的值传给编辑框显示。

}

好了,写完代码马上运行下,看看是不是每按一次按钮编辑框就多显示一个字符呢?其他按钮也一样的实现方法。

直接追加法:

直接追加法没有那么多事要做了,直接写代码就OK了,只是比上一种方法不易理解。

代码如下:

void CCalcDlg::OnBnClickedButton19()

{

CString str=L"2";    //要追加的字符

CEdit *p=(CEdit*)GetDlgItem(IDC_EDIT1); //对编辑框1追加

int Len=p->SendMessage(WM_GETTEXTLENGTH);//获取长度

p->SetSel(Len,Len);

p->ReplaceSel(str);//追加

}

好了,以上两种方法任选一种即可。把所有的按钮(当然不包括运算作用的“=”等等了)都这样处理,并且测试成功之后再继续进行。

接下来,就是关键的计算了。这里大家可以用很多方法,比如用数据结构的栈和二叉树,或者自己写计算算法。我数据结构太糟了,只能去看人家写的代码了~~~

首先,按钮的禁用问题我们没解决呢!进制转换的问题也是大问题。我们的进制是用复选框控件实现的。为复选框添加事件,写入代码:

GetDlgItem(IDC_BUTTON28)->EnableWindow(1);。

这句的意思是当复选框被选择是按钮28是可用状态。如果EnableWindow(0)就是不可用状态。大家自己根据自己的按钮顺序自己复制代码吧。比如我的是这样的:

除了0和1外都不能使用。

百度网友faadf46
高粉答主

2020-04-23 · 说的都是干货,快来关注
知道答主
回答量:4556
采纳率:0%
帮助的人:75.9万
展开全部

1、新建项目:打开VS2010-文件-新建-项目-MFC应用程序-名称(计算器)。

2、设置应用程序类型:点选为基于对话框,新建一个基于对话框的程序。如下图所示。

3、调整对话框:删除对话框内所有控件,并将对话框调整至合适大小,如下图所示。

4、添加编辑框:添加三个编辑框加数1、加数2、和。ID分别设置IDC_ADD1、IDC_ADD2、IDC_SUM。和的属性Read Only设置为true,其余的默认。如下图所示。

5、添加静态文本:添加五个静态文本控件分别修改Caption为加数1,加数2,加运算符,和、+,=。如下图所示。

6、添加计算按钮:添加一个计算按钮,设置Caption为计算,ID为ID_ADD。如下图所示。

7、编辑代码:添加如下代码计算结果UpdateData(true);//读取编辑框的值到关联的值变量中m_sum=m_add1+m_add2;//计算结果存到编辑框的关联变量中UpdateData(false);//将计算的结果显示到编辑框中。

8、运行测试:编译运行,输入数值分别输入两个加数然后点击计算按钮,效果如下图所示。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
热情的大神
2018-01-13 · TA获得超过157个赞
知道小有建树答主
回答量:176
采纳率:73%
帮助的人:81.2万
展开全部
这程序让你编的稀碎啊
就是想让编辑框显示你想显示的东西嘛,直接给编辑框关联CString类型的变量(数字也可以是int类型的)
你说的数字7的Type是CString,而数字8的Type是CButton,就是编辑框关联的变量类型有问题

有问题随时在问
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小菊坂胡蝶
2010-09-07 · TA获得超过202个赞
知道小有建树答主
回答量:441
采纳率:0%
帮助的人:136万
展开全部
m_strInputBox += _T("1");

UpdateData(FALSE);

不就行了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2010-09-07
展开全部
int k=7;
CString m_edit ;
m_edit.Format("%d",k);
UpdateData(FALSE);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式