用Win32 SDK写一个简单的计算器
2010-07-11 20:44:36 来源:WEB开发网用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; //按下了数字键
}
赞助商链接