VC++制作整数计算器

VC++制作整数计算器

风De味道的``````

2008年06月09日 星期一 00:30

1.首先开机(废话),进入Windows XP或其它(废话),打开Visual C++ 6.0(以下删除废话两万字),使用AppWizard生成一个基于对话框的应用程序,并给主窗口对话框取名Calculate。

2.编辑对话框

   包含1个编辑控件、16个按钮。如下图:

   

属性设置:

    控件类型         Caption                          属性                                   ID号

     Edit Box             --                     Read Only、右对齐                  IDC_EDIT

     Button               + - *   /                          默认                              IDC_ADD/IDC_SUB/IDC_MUL/IDC_DIV

     Button              0~9                               默认                               IDC_B0~B9

     Button               CE                               默认                               IDC_RESET

     Button                =                                 默认                               IDC_EQUAL

3.使用ClassWizard为编辑框控件在Calculate对话框类中连接long型成员变量 m_data(用于接收EDIT控件的值)。

4.分别为16个按钮控件在对话框类中添加映射消息处理函数。映射事件都为BN_CLICKED,名字均为ON****

5.在Calculate类中添加数据成员,如下表所示,并在初始构造函数中设置数据成员的初值。

声明变量位置:《Calculate.h》 可以打开类面板,右击ccalculatedlg类选择Add member variable进行添加。

class CCalculateDlg : public CDialog
{
// Construction
public:
CCalculateDlg(CWnd* pParent = NULL); // standard constructor

// Dialog Data
//{{AFX_DATA(CCalculateDlg)
enum { IDD = IDD_CALCULATE_DIALOG };
long m_result;
int m_flag;
int m_flgoperate;

//}}AFX_DATA

类型      变量名称               初值                     说明

long       m_result                   0             存放运算的结果

int          m_flag                      1             表示运算类型,1:加法,2:减法,3:乘法,4:除法   

int        m_flgoperate            0             表示运算的操作按钮被单击之后,下一次单击数字里清空数据     

   初始化三个变量的位置:     《CalculateDlg.cpp

CCalculateDlg::CCalculateDlg(CWnd* pParent /*=NULL*/)
: CDialog(CCalculateDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CCalculateDlg)
m_data = 0;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_result=0;
m_flag=1;
m_flgoperate=0;
m_data=0;

}

6.编制 pressnum 函数和pressoperator 函数,位置 :《Calculate.h 》紧接在上面的四个变量之后,可以在类面板中右击ccalculatedlg类,选择Add member function进行添加函数。

class CCalculateDlg : public CDialog
{

。。。。。

protected:  

void pressnum(int num) {//表示处理单击数字按钮的通用操作,num表示0~9的数字
      if (m_flgoperate==1)    //表示刚按下运算键之后,开始输入一个新的数字,编辑框为0
              { m_data=0;
               m_flgoperate=0;}
                m_data=m_data*10+num;   //连续输入数字时,以十进制相加
                UpdateData(false);
}

void pressoperate(int n) { //表示处理单击运算按钮的通用操作
   if (m_flgoperate==0)
    {
       UpdateData(true);
     switch(m_flag)
     { case 1: m_result+=m_data; //表示加运算
                    m_data=m_result;
                  break;
        case 2: m_result-=m_data; //表示减运算
                     m_data=m_result;
                  break;
        case 3: m_result*=m_data; //表示乘运算
                    m_data=m_result;
                     break;
        case 4: if (m_data==0)        //表示除运算
                           {AfxMessageBox("Cannot divide by zero"); //分母不能为0,否则零溢出
                              m_result=0;}
                      else
                             {m_result/=m_data;
                               m_data=m_result;}
                     break;}
         }
     m_flag=n;
     m_flgoperate=1;
     UpdateData(false);
}

7.下面就是为16个按钮编制单击按钮的消息处理函数

void CCalculateDlg::OnB0()
{
pressnum(0);
}

void CCalculateDlg::OnB1()
{
// TODO: Add your control notification handler code here
pressnum(1);
}

void CCalculateDlg::OnB2()
{
// TODO: Add your control notification handler code here
pressnum(2);
}

void CCalculateDlg::OnB3()
{
// TODO: Add your control notification handler code here
pressnum(3);
}

void CCalculateDlg::OnB4()
{
// TODO: Add your control notification handler code here
pressnum(4);
}

void CCalculateDlg::OnB5()
{
// TODO: Add your control notification handler code here
pressnum(5);
}

void CCalculateDlg::OnB6()
{
// TODO: Add your control notification handler code here
pressnum(6);
}

void CCalculateDlg::OnB7()
{
// TODO: Add your control notification handler code here
pressnum(7);
}

void CCalculateDlg::OnB8()
{
// TODO: Add your control notification handler code here
pressnum(8);
}

void CCalculateDlg::OnB9()
{
// TODO: Add your control notification handler code here
pressnum(9);
}

void CCalculateDlg::OnAdd()
{
// TODO: Add your control notification handler code here
pressoperate(1);
}

void CCalculateDlg::OnDiv()
{
// TODO: Add your control notification handler code here
pressoperate(4);
}

void CCalculateDlg::OnEqual()    //处理=号的单击操作
{
// TODO: Add your control notification handler code here
UpdateData(true);
    switch(m_flag)
    { case 1: m_data+=m_result;break;
      case 2: m_result-=m_data;m_data=m_result;break;
      case 3: m_result*=m_data;m_data=m_result;break;
      case 4: if   (m_data==0)
                        AfxMessageBox("Cannot divide by zero!");
                else {
                       m_result/=m_data;
                         m_data=m_result;}
                           break;}
     UpdateData(false);
      m_result=0;
   m_data=0;
   m_flgoperate=0;
    m_flag=1;

}

void CCalculateDlg::OnMul()
{
// TODO: Add your control notification handler code here
pressoperate(3);
}

void CCalculateDlg::OnReset()
{
// TODO: Add your control notification handler code here
m_result=0;
m_data=0;
m_flag=1;
m_flgoperate=0;
UpdateData(false);
}

void CCalculateDlg::OnSub()
{
// TODO: Add your control notification handler code here
pressoperate(2);
}

8.编译运行,最终效果:

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值