用Win32 SDK写一个简单的计算器

用MFC做计算器非常容易,大家都认为用SDK做非常难, 但是我认为只要你的思路正确,做起来也是一样得心应手。 由于SDK做工程也是有规律可寻,就是建立框架然后再对框架进行消息处理。 所以我学VC++一个多月来编出来了我的第一个小程序,在这里和各位VC爱好者交流交流。

做计算器之前,首先要了解下面二个函数:字符串转换为双精度和双精度转换为字符串。 字符串转换为双精度函数为double strtod( const char *nptr, char **endptr ),其中nptr表示要转换的字符串, endptr表示到不是数字的字符时停止扫描;双精度转换为字符串函数为char *_gcvt( double value, int digits, char *buffer ),其中value表示要转换为字符串的数值,digts表示有意义的位数,buffer表示用来存储字符串的缓冲区。了解了这两函数后对计算器的组织就开始有了一定的了解。

下面介绍说明一下计算器的步骤:

1.写上一个可以说是千篇一律的主函数。

2.消息处理这部分是最难的也是最主要的部分,在这部分中包含建立按钮、文本框和对每个按钮按下去的功能实现。 建立按钮和文本框等一些外观的步骤略,如果想要详细的代码请看源程序。

3.对数字键用一个函数表示:

//------按下数字键(0~9和小数点)的操作处理函数------
void NumResult(char *NumData)
{
  if (nOptF==0)
   SetWindowText(hEditResult,""); //hEditResult表示文本框
  nMax=GetWindowTextLength(hEditResult)+1;
  GetWindowText(hEditResult,lpszAddItem,nMax); //用lpszAddItembr存储字符串
  strcat(lpszAddItem,NumData); ///字符串加该数字键的字符
  //lpszOpt表示是否按下操作符键,
  //如是没有按过就赋值为“N”;
  //如是按了就赋值为该操作符
  if (strcmp(lpszOpt,"N")==0)
  {
   strcpy(lpszResult1,lpszAddItem);
   SetWindowText(hEditResult,lpszResult1);
  }
  else
  {
    strcpy(lpszResult2,lpszAddItem);
    SetWindowText(hEditResult,lpszResult2);
  }
  nOptF=1; //按下了数字键
}

时间: 2016-07-11

用Win32 SDK写一个简单的计算器的相关文章

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

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

对象-什么意思,一直不知道,一个简单的计算器代码

问题描述 什么意思,一直不知道,一个简单的计算器代码 private void btnEqual_Click(object sender, EventArgs e) { C.Operation op = C.OperationFactory.CreateOperation(cbOperate.SelectedItem.ToString()); op.NumberA=Convert.ToDouble(txtA.Text); op.NumberB=Convert.ToDouble(txtB.Text

请大神帮忙写一个简单的聚类算法程序,在线等……用matlab或者java实现

问题描述 请大神帮忙写一个简单的聚类算法程序,在线等--用matlab或者java实现 Step1:将N个数据,按照从小到大的顺序排序 d1.d2,.....dn:其中d1时最小值,dn是最大值 聚类判别阈值计算方法为: Step2:让每个数据都作为一个类,那么有 {d1},{d2},{d3},.....{dn} Step3:计算聚类中心 假设共有P个类,那么1<=k<=P,其中r代表每个类中数据的个数,同时计算相邻两个聚类中心之间的距离,如下 Step4:找出相邻两个聚类中心的最小值 Ste

java中用集合写一个简单的登录功能。麻烦大家看一看

问题描述 java中用集合写一个简单的登录功能.麻烦大家看一看 //这是注册的方法 public static void reg(){ Collection id=new ArrayList();//账户 Collection passWord=new ArrayList();//密码 Scanner sc=new Scanner(System.in); System.out.println("请输入账号:"); id.add(sc.next()); System.out.printl

学习servlet,写一个简单的Helloword出现404错误

问题描述 学习servlet,写一个简单的Helloword出现404错误 解决方案 不需要 /servlet 解决方案二: 解决方案三: web.xml内容贴下来看看. 可以参考 我写的http://blog.csdn.net/evankaka/article/details/45151569 解决方案四: url里把[/Hello]改成[/HelloServlet] 和你Web.xml里配置的url-pattern一样. 解决方案五: 一个简单的Servlet 解决方案六: 采用servle

iis-用VisualStudio2012写一个简单的网站

问题描述 用VisualStudio2012写一个简单的网站 用VisualStudio2012写一个简单的网站,主要想学一下怎么用VS写网站.IIS安装好了用http://localhost打不开,百度方法用遍了都没解决,就没有一个会的么?!

springmvc-用jsp写一个简单的登录页面

问题描述 用jsp写一个简单的登录页面 求写一个登录页面,有form表单,然后能提交到数据库.框架是spring,数据库是sql,用java,jsp写..我是新手,所以恳求大神帮帮我.非常感谢谢.. 解决方案 form表单里面放输入框组,用于填写数据,像登陆这种涉及隐私的操作,最好使用post方式提交, 在action层,我看到你只提到了spring,那就直接servlet来接收数据进行处理,在doPost中通过request.getParameter(str)获取参数,经过一系列校验之后,就可

c++-写一个简单的二叉树遇到了segmentation fault :11问题,求助

问题描述 写一个简单的二叉树遇到了segmentation fault :11问题,求助 本人小白,写了个简单的二叉树练习一下,代码如下,运行时会出现segmentation fault :11错误,求助各位大大帮忙看看是什么原因? #include <iostream> #include <fstream> using namespace std; class Node { private: int content; Node *left; Node *right; public

checkbox-刚学完JS和servlet,写一个简单的注册登录页面

问题描述 刚学完JS和servlet,写一个简单的注册登录页面 ,想把checkbox选中的的数据和下拉列表选中的的年月日组合成字符串发送给servlet,该怎么做,求大神指教 解决方案 username: password: 表单 action 对应的servlet method 提交方式,对应servlet的doPost和doGet方法 在servlet中写 req.getParameter("username"); req.getParameter("password&