基于MFC的简易计算器

来源:互联网 发布:linux拷贝文件命令 编辑:程序博客网 时间:2024/05/16 14:19



-------------------------------------------------------------------------MAIN.h------------------------------------------------------------------------------------------
#ifndef _MAIN_H
#define _MAIN_H
#include <windows.h>
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam);
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
void Main_OnClose(HWND hwnd);
#endif
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------resource.h--------------------------------------------------------------------------------------
#define IDD_MAIN                        101
#define IDR_DEFAULT1                    103
#define IDI_ICON1                       115
#define IDC_OK                          1000
#define IDC_DSC                         1005
#define IDC_D7                          1007
#define IDC_DE                          1009
#define IDC_D0                          1010
#define IDC_DSC2                        1012
#define IDC_D8                          1016
#define IDC_D9                          1017
#define IDC_DD                          1018
#define IDC_DSU                         1019
#define IDC_D4                          1020
#define IDC_D5                          1021
#define IDC_D6                          1022
#define IDC_DM                          1023
#define IDC_DP1X                        1024
#define IDC_D1                          1025
#define IDC_D2                          1026
#define IDC_D3                          1027
#define IDC_DS                          1028
#define IDC_DP                          1030
#define IDC_DA                          1031
#define IDC_DPB                         1037
#define IDC_DPCE                        1038
#define IDC_DPC                         1039
#define IDC_DPAS                        1040
#define IDC_DPR                         1041
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        116
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1013
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------Stdafx.h-----------------------------------------------------------------------------------------
#define _WIN32_WINNT 0x0501
#define _WIN32_IE 0x0600 
#define WINVER  0x0501
#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define WIN32_LEAN_AND_MEAN  // Exclude rarely-used stuff from Windows headers
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------Stdafx.cpp--------------------------------------------------------------------------------------
#include "stdafx.h"
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
--------------------------------------------------------------------------Main.cpp---------------------------------------------------------------------------------------
#include "stdafx.h"
#include "resource.h"
#include "MainDlg.h"
#include <COMMCTRL.H>
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
 InitCommonControls();
 DialogBox(hInstance, MAKEINTRESOURCE(IDD_MAIN), NULL, Main_Proc);
 return 0;
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------MainDlg.cpp------------------------------------------------------------------------------------
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include "resource.h"
#include "MainDlg.h"
#include <stdlib.h>
#include <string.h>
#include <math.h>
TCHAR msg[256]; //第一个数
TCHAR msa[256]; //另一个数
TCHAR m0[256];  //用于初始化
TCHAR m1[256];  //用于上界面显示
int flag=0;     //标记
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
        HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
        HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
  HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
    }
    return FALSE;
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
 SetDlgItemText(hwnd,IDC_DSC,"0");
    return TRUE;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
  case IDC_DE://等于
  {
   if(flag==1)
   {
    double sum;
    sum=atof(msa)+atof(msg);
    gcvt(sum,sizeof(sum)+1,msg);
    wsprintf(m1,"%s",m0);
    if(msg[strlen(msg)-1]=='.')
    {
     msg[strlen(msg)-1]='\0';
    }
    SetDlgItemText(hwnd,IDC_DSC2,m1);
    SetDlgItemText(hwnd,IDC_DSC,msg);
    wsprintf(msa,"%s",m0);
    flag=0;
   }
   else if(flag==2)
   {
    double sum;
    sum=atof(msa)-atof(msg);
    gcvt(sum,sizeof(sum)+1,msg);
    wsprintf(m1,"%s",m0);
    if(msg[strlen(msg)-1]=='.')
    {
     msg[strlen(msg)-1]='\0';
    }
    SetDlgItemText(hwnd,IDC_DSC2,m1);
    SetDlgItemText(hwnd,IDC_DSC,msg);
    wsprintf(msa,"%s",m0);
    flag=0;
   }
   else if(flag==3)
   {
    double sum;
    sum=atof(msa)*atof(msg);
    gcvt(sum,sizeof(sum)+1,msg);
    wsprintf(m1,"%s",m0);
    if(msg[strlen(msg)-1]=='.')
    {
     msg[strlen(msg)-1]='\0';
    }
    SetDlgItemText(hwnd,IDC_DSC2,m1);
    SetDlgItemText(hwnd,IDC_DSC,msg);
    wsprintf(msa,"%s",m0);
    flag=0;
   }
   else if(flag==4)
   {
    double sum;
    sum=atof(msa)/atof(msg);
    gcvt(sum,sizeof(sum)+1,msg);
    wsprintf(m1,"%s",m0);
    if(msg[strlen(msg)-1]=='.')
    {
     msg[strlen(msg)-1]='\0';
    }
    SetDlgItemText(hwnd,IDC_DSC2,m1);
    SetDlgItemText(hwnd,IDC_DSC,msg);
    wsprintf(msa,"%s",m0);
    flag=0;
   }
   else if(flag==5)
   {
    int sum;
    sum=atoi(msa)%atoi(msg);
    itoa(sum,msg,10);
    wsprintf(m1,"%s",m0);
    SetDlgItemText(hwnd,IDC_DSC2,m1);
    SetDlgItemText(hwnd,IDC_DSC,msg);
    wsprintf(msa,"%s",m0);
    flag=0;
   }
  }
  break;
//////////////////////////////////////////////////////////////////////////
  case IDC_DA: //加法
  {
   flag=1;
   wsprintf(m1,"%s+",msg);
   SetDlgItemText(hwnd,IDC_DSC2,m1);
   wsprintf(msa,"%s",msg);
   wsprintf(msg,"%s",m0);
  }
  break;
  
  case IDC_DM: //乘法
  {
   flag=3;
   wsprintf(m1,"%sx",msg);
   SetDlgItemText(hwnd,IDC_DSC2,m1);
   wsprintf(msa,"%s",msg);
   wsprintf(msg,"%s",m0);
  }
  break;
  case IDC_DD: //除法
  {
   flag=4;
   wsprintf(m1,"%s÷",msg);
   SetDlgItemText(hwnd,IDC_DSC2,m1);
   wsprintf(msa,"%s",msg);
   wsprintf(msg,"%s",m0);
  }
  break;
  case IDC_DS:  //减法
  {
   flag=2;
   wsprintf(m1,"%s-",msg);
   SetDlgItemText(hwnd,IDC_DSC2,m1);
   wsprintf(msa,"%s",msg);
   wsprintf(msg,"%s",m0);
  }
  break;
  
  case IDC_DSU:  //求余
  {
   flag=5;
   wsprintf(m1,"%s%%",msg);
   SetDlgItemText(hwnd,IDC_DSC2,m1);
   wsprintf(msa,"%s",msg);
   wsprintf(msg,"%s",m0);
  }
  break;
  case IDC_DPR:  //求根
  {
   double sum;
   sum=sqrt(atof(msg));
   gcvt(sum,sizeof(sum)+1,msg);
   if(msg[strlen(msg)-1]=='.')
   {
    msg[strlen(msg)-1]='\0';
   }
   SetDlgItemText(hwnd,IDC_DSC,msg);
  }
  break;
  case IDC_DP1X:  // 1/x
  {
   double sum;
   sum=1/(atof(msg));
   gcvt(sum,sizeof(sum)+1,msg);
   if(msg[strlen(msg)-1]=='.')
   {
    msg[strlen(msg)-1]='\0';
   }
   SetDlgItemText(hwnd,IDC_DSC,msg);
  }
  break;

  case IDC_DPAS://正负号
  {
   if(msg[0]=='-')
   {
    for(int k=0;k<strlen(msg);k++)
    {
     msg[k]=msg[k+1];
    }
    SetDlgItemText(hwnd,IDC_DSC,msg);
   }
   else
   {
    int c;
    c=strlen(msg);
    for(int k=0;k<=c;c--)
    {
     msg[c+1]=msg[c];
     if(c==0)
     {
      msg[0]='-';
      break;
     }
    }
    SetDlgItemText(hwnd,IDC_DSC,msg);
   }    
  }
  break;
  case IDC_DPC: //C
  {   
   wsprintf(msg,"%s",m0);
   wsprintf(msa,"%s",m0);
   wsprintf(m1,"%s",m0);
   SetDlgItemText(hwnd,IDC_DSC2,m1);
   SetDlgItemText(hwnd,IDC_DSC,"0");
  }
  break;
  case IDC_DPCE: //CE
  {   
   wsprintf(msg,"%s",m0);
   wsprintf(msa,"%s",m0);
   wsprintf(m1,"%s",m0);
   SetDlgItemText(hwnd,IDC_DSC2,m1);
   SetDlgItemText(hwnd,IDC_DSC,"0");
  }
  break;
  case IDC_DPB: //←
  {  
   int t=strlen(msg)-1;
   if(t<0)
   {
    return;
   }
   if(t==0)
   {
    SetDlgItemText(hwnd,IDC_DSC,"0");
    wsprintf(msg,"%s",m0);
   }
   else
   {
    msg[t]='\0';
       SetDlgItemText(hwnd,IDC_DSC,msg);
   }
  }
  break;

  case IDC_DP:  //点
  {
   int k;
   int flag1=0;
   for(k=0;k<strlen(msg);k++){
    if(msg[k]=='.')
    {
     flag1=1;
     break;
    }
   }
   if(flag1==1) break;
   wsprintf(msg,"%s%c",msg,'.');
   SetDlgItemText(hwnd,IDC_DSC,msg); 
  }
  break;
  case IDC_D0:
  {
   int k;
   int flag1=0;
   for(k=0;k<strlen(msg);k++){
    if(msg[k]=='.')
    {
     flag1=1;
     break;
    }
   }
   if(msg[0]=='0'&&flag1!=1) break;
   wsprintf(msg,"%s%d",msg,0);
   SetDlgItemText(hwnd,IDC_DSC,msg);
  }
  break;

  case IDC_D1:
  {
   wsprintf(msg,"%s%d",msg,1);
   SetDlgItemText(hwnd,IDC_DSC,msg);
  }
  break;
  case IDC_D2:
  {
   wsprintf(msg,"%s%d",msg,2);
   SetDlgItemText(hwnd,IDC_DSC,msg);
  }
  break;
  case IDC_D3:
  {
   wsprintf(msg,"%s%d",msg,3);
   SetDlgItemText(hwnd,IDC_DSC,msg);
  }
  break;
  case IDC_D4:
  {
   wsprintf(msg,"%s%d",msg,4);
   SetDlgItemText(hwnd,IDC_DSC,msg);
  }
  break;
  case IDC_D5:
  {
   wsprintf(msg,"%s%d",msg,5);
   SetDlgItemText(hwnd,IDC_DSC,msg);
  }
  break;
  case IDC_D6:
  {
   wsprintf(msg,"%s%d",msg,6);
   SetDlgItemText(hwnd,IDC_DSC,msg);
  }
  break;
  case IDC_D7:
  {
   wsprintf(msg,"%s%d",msg,7);
   SetDlgItemText(hwnd,IDC_DSC,msg);
  }
  break;
  case IDC_D8:
  {
   wsprintf(msg,"%s%d",msg,8);
   SetDlgItemText(hwnd,IDC_DSC,msg);
  }
  break;
  case IDC_D9:
  {
   wsprintf(msg,"%s%d",msg,9);
   SetDlgItemText(hwnd,IDC_DSC,msg);
  }
  break;
        default:
  break;
    }
}
void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}


0 0
原创粉丝点击