找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4152|回复: 0
打印 上一主题 下一主题
收起左侧

刚开始学MFC写了一中午写了个简单计算器

[复制链接]
跳转到指定楼层
楼主
ID:102668 发表于 2016-1-10 23:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

学了一周的MFC发现这东西只你要理解了他的脉络。其实也不像想象中的那么难。在我的一路学习——放弃——学习............................
之后,现在的我才算是对mfc有了个初步了解,现还是处在入门阶段。
这个程序中只有下面的部分是我自己写的,别的都是用vs 2008下的MFC应用程序向导生成的。
void CWYZDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
//方法一
//GetDlgItem(IDC_EDIT3)->GetWindowTextA(str3,10);//GetDlgItem(IDC)  返回一个CWind指针用他调用GetWindowTextA(char*,size)来获取控件的内容
   // GetDlgItem(IDC_EDIT1)->GetWindowTextA(str1,10);
//GetDlgItem(IDC_EDIT2)->GetWindowTextA(str2,2);
    //方法二
GetDlgItemTextA(IDC_EDIT3,str3,10);
    GetDlgItemTextA(IDC_EDIT2,str2,2);
GetDlgItemTextA(IDC_EDIT1,str1,10);
   //方法三
//num1=GetDlgItemInt(IDC_EDIT1);
//num3=GetDlgItemInt(IDC_EDIT3);
num1=atof(str1);//将字串转换成数字
num3=atof(str3);
if(*str2==0)  return ;
if(*str2=='+'||*str2=='-'||*str2=='*'||*str2=='/')
{
  switch(*str2)
{
case '+' :GetDlgItem(IDC_STATIC1)->SetWindowTextA("被加数") ;
        GetDlgItem(IDC_STATIC2)->SetWindowTextA(" 加号 ") ;
     GetDlgItem(IDC_STATIC3)->SetWindowTextA(" 加数 ") ;
     GetDlgItem(IDC_STATIC)->SetWindowTextA("  和  ") ;
     break;
     
case '-': GetDlgItem(IDC_STATIC1)->SetWindowTextA("被减数") ;
        GetDlgItem(IDC_STATIC2)->SetWindowTextA(" 减号 ") ;
     GetDlgItem(IDC_STATIC3)->SetWindowTextA(" 减数 ") ;
     GetDlgItem(IDC_STATIC)->SetWindowTextA("  差  ") ;
  break;
case '*': GetDlgItem(IDC_STATIC1)->SetWindowTextA("被乘数") ;
        GetDlgItem(IDC_STATIC2)->SetWindowTextA(" 乘号 ") ;
     GetDlgItem(IDC_STATIC3)->SetWindowTextA(" 乘数 ") ;
     GetDlgItem(IDC_STATIC)->SetWindowTextA("  积  ") ;
  break;
case '/': GetDlgItem(IDC_STATIC1)->SetWindowTextA("被除数") ;
        GetDlgItem(IDC_STATIC2)->SetWindowTextA(" 除号 ") ;
     GetDlgItem(IDC_STATIC3)->SetWindowTextA(" 除数 ") ;
     GetDlgItem(IDC_STATIC)->SetWindowTextA("  商  ") ;
  break;
default :MessageBoxA( "出现异常","警告");
}
}


//UpdateData();
switch(*str2)
{
case '+' :
  num4=num3+num1;break;
case '-':
  num4=num1-num3;break;
case '*':
  num4=num3*num1;break;
case '/':
  num4=num1/num3;break;
default :MessageBoxA( "运算符输入错误","警告");
  return ;
}
//UpdateData(FALSE);
// itoa(num4,str4,10);
    str4=fundz(num4);
GetDlgItem(IDC_EDIT4)->SetWindowTextA(str4);  //将计算后的结果存对编译框中
}

void CWYZDlg::OnBnClickedButton2()//用于清空
{
// TODO: 在此添加控件通知处理程序代码
GetDlgItem(IDC_EDIT1)->SetWindowTextA(0);
GetDlgItem(IDC_EDIT2)->SetWindowTextA(0);
GetDlgItem(IDC_EDIT3)->SetWindowTextA(0);
GetDlgItem(IDC_EDIT4)->SetWindowTextA(0);

    GetDlgItem(IDC_STATIC1)->SetWindowTextA("数值1");
  GetDlgItem(IDC_STATIC2)->SetWindowTextA("运算符");
   GetDlgItem(IDC_STATIC3)->SetWindowTextA("数值2");
    GetDlgItem(IDC_STATIC)->SetWindowTextA("结果");

}
char * CWYZDlg::fundz(double db)
{  
     char   cc[100];   
       sprintf(cc,"%.7g",db);
  return cc;
}
void CWYZDlg::OnBnClickedButton3()
{
// TODO: 在此添加控件通知处理程序代码
MessageBoxA("   此计算器为一毛制做   \n\n    现在只能算加减乘除法数\n值\n    过大会出现精度上的误差。\n别的功能会在学习中不断添\n加。","提示");
}


经过改进后的,新版本。计算器。
想看看的可以去这里下载。原代码(工程)http://u.115.com/file/f8b98da8e2  mfc写的一个简单计算器.zip
想要用用的可以去这里下载  http://u.115.com/file/f8e853478b   Jsq.exe


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表