⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calculator.c

📁 基于Minigui 2.04开发的计算器
💻 C
📖 第 1 页 / 共 2 页
字号:
        WS_CHILD | WS_TABSTOP | WS_VISIBLE | BS_PUSHBUTTON, 
        30, 155, 35, 25,
        IDC_BUTTON+27, 
        "M+",
        0
    }
    
};


static DLGTEMPLATE DlgCalculator =
{
    WS_VISIBLE | WS_BORDER | WS_CAPTION | WS_MINIMIZEBOX | WS_MAXIMIZEBOX,
    WS_EX_NONE,
    0, 0, 320, 240, 
    "计算器",
    0, 0,
    29, Ctrlcalc,
    0
};

static void AboutCalculator (HWND hParent)
{
    MessageBox (hParent, 
            "YAXON 计算器 版本1.0\n\n"
            "这是在Minigui下开发的计算器,部分功能尚未完善",
            "计算器",
            MB_OK | MB_ICONEXCLAMATION);

}

static TreatDlgItemText(HWND hDlg,double digit,char *result,char *buffer)
{
   int len=0,i=0,j=0;
   
   sprintf(result,"%0.12f",digit);
   len=strlen(result)-1;
   for(j=0;j<len;j++){
     if(result[len-j]=='0')
	   result[len-j]='\0';
     else if(result[len-j]=='.'){
       result[len-j]='\0';
       break;
	 } else 
		break;
   }
   SetDlgItemText(hDlg,IDC_RESULT,result);
		
   memset(buffer,0,64);
   memset(result,0,64);
}

static int CalculatorDialogBoxProc (HWND hDlg, int message, WPARAM wParam, LPARAM lParam)
{
  double digit=0;
  int len=0,i=0,j=0;
  static char text[64]={0,},buffer[64]={0,},result[64]={0,};
  static int operation=0,flag=0;
    
  switch (message) {
   case MSG_INITDIALOG:
   	 { 
	   gal_pixel pixel = RGB2Pixel (HDC_SCREEN, 255, 250, 230);  //transparent 25500255
	   SetWindowBkColor (hDlg, pixel);
	   //SetWindowBkColor (GetDlgItem(hDlg, IDC_BUTTON),COLOR_green);
	   //SetWindowElementColorEx(GetDlgItem(hDlg, IDC_BUTTON),BKC_BUTTON_DEF,COLOR_green);
       for(i=IDC_BUTTON;i<IDC_BUTTON+3;i++)
	     SetWindowElementColorEx(GetDlgItem(hDlg, i),FGC_BUTTON_PUSHED,COLOR_red);
       for(i=IDC_BUTTON+3;i<IDC_BUTTON+23;i++)
	     SetWindowElementColorEx(GetDlgItem(hDlg, i),FGC_BUTTON_PUSHED,COLOR_blue);
	   for(i=IDC_BUTTON+23;i<IDC_BUTTON+28;i++)
	     SetWindowElementColorEx(GetDlgItem(hDlg, i),FGC_BUTTON_PUSHED,COLOR_red);
	   //UpdateWindow (hwnd, TRUE);
   	 }   
      break;
   case MSG_COMMAND:
    switch (wParam)
	{
	  case IDM_ABOUT:
	 	 AboutCalculator(hDlg);
		 break;
      case IDC_BUTTON:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
		 if(flag==0 || flag==1){
           len=strlen(text);
           if(len<2){
             SetDlgItemText(hDlg,IDC_RESULT,"0");
             break;
           }else
             text[len-1]='\0';
           SetDlgItemText(hDlg,IDC_RESULT,text);
		 }
         break;
	  case IDC_BUTTON+1:
         SetDlgItemText(hDlg,IDC_RESULT,"0");
         flag=0;
         operation=0;
         break;
      case IDC_BUTTON+2:
         SetDlgItemText(hDlg,IDC_RESULT,"0");
         flag=0;
         operation=0;
         break;	 
       case IDC_BUTTON+3:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         len = strlen(text);
		 if(flag==2){
		   memset(text,0,sizeof(text));
           text[0]='7';
		   flag=0;
		 } else if(text[0]=='0'&&text[1]=='\0'){
		   memset(text,0,sizeof(text));
           text[0]='7';
         }else
           text[len] = '7' ;
         text[len+1] = '\0';
         SetDlgItemText(hDlg,IDC_RESULT,text);
         break;
      case IDC_BUTTON+4:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         len = strlen(text);
		 if(flag==2){
		   memset(text,0,sizeof(text));
           text[0]='4';
		   flag=0;
		 }else if(text[0]=='0'&&text[1]=='\0')
            text[0]='4';
         else
            text[len] = '4' ;
         text[len+1] = '\0';
         SetDlgItemText(hDlg,IDC_RESULT,text);
         break;
      case IDC_BUTTON+5:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         len = strlen(text);
		 if(flag==2){
		   memset(text,0,sizeof(text));
           text[0]='1';
		   flag=0;
		 }else if(text[0]=='0'&&text[1]=='\0')
           text[0]='1';
         else
           text[len] = '1' ;
         text[len+1] = '\0';
         SetDlgItemText(hDlg,IDC_RESULT,text);
         break;
      case IDC_BUTTON+6:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         len = strlen(text);
		 if(flag==2){
		   memset(text,0,sizeof(text));
           text[0]='0';
		   flag=0;
		 }else if(text[0]=='0'&&text[1]=='\0')
           break;
         else
           text[len] = '0' ;
         text[len+1] = '\0';
         SetDlgItemText(hDlg,IDC_RESULT,text);
         break;
      case IDC_BUTTON+7:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         len = strlen(text);
		 if(flag==2){
		   memset(text,0,sizeof(text));
           text[0]='8';
		   flag=0;
		 }else if(text[0]=='0'&&text[1]=='\0')
           text[0]='8';
         else
           text[len] = '8' ;
         text[len+1] = '\0';
         SetDlgItemText(hDlg,IDC_RESULT,text);
         break;
      case IDC_BUTTON+8:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         len = strlen(text);
		 if(flag==2){
		   memset(text,0,sizeof(text));
           text[0]='5';
		   flag=0;
		 }else if(text[0]=='0'&&text[1]=='\0')
           text[0]='5';
         else
           text[len] = '5' ;
         text[len+1] = '\0';
         SetDlgItemText(hDlg,IDC_RESULT,text);
         break;
      case IDC_BUTTON+9:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         len = strlen(text);
		 if(flag==2){
		   memset(text,0,sizeof(text));
           text[0]='2';
		   flag=0;
		 }else if(text[0]=='0'&&text[1]=='\0')
           text[0]='2';
         else
           text[len] = '2' ;
         text[len+1] = '\0';
         SetDlgItemText(hDlg,IDC_RESULT,text);
         break;
      case IDC_BUTTON+10:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
		 len=strlen(text);
		 if(flag == 0 || flag==1 || flag==3){
	       if(text[0]=='-'){
             for(j=0;j<len;j++)
	           result[j]=text[j+1];
  		   }else{
     	      sprintf(result,"-%s",text);
           }	 
           SetDlgItemText(hDlg,IDC_RESULT,result);
     	 }
         break;
	  case IDC_BUTTON+11:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         len = strlen(text);
		 if(flag==2){
		   memset(text,0,sizeof(text));
           text[0]='9';
		   flag=0;
		 }else if(text[0]=='0'&&text[1]=='\0')
           text[0]='9';
         else
           text[len] = '9' ;
         text[len+1] = '\0';
         SetDlgItemText(hDlg,IDC_RESULT,text);
         break;
      case IDC_BUTTON+12:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         len = strlen(text);
		 if(flag==2){
		   memset(text,0,sizeof(text));
           text[0]='6';
		   flag=0;
		 }else if(text[0]=='0'&&text[1]=='\0')
            text[0]='6';
         else
           text[len] = '6' ;
         text[len+1] = '\0';
         SetDlgItemText(hDlg,IDC_RESULT,text);
         break;
      case IDC_BUTTON+13:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         len = strlen(text);
		 if(flag==2){
		   memset(text,0,sizeof(text));
           text[0]='3';
		   flag=0;
		 }else if(text[0]=='0'&&text[1]=='\0')
           text[0]='3';
         else
           text[len] = '3' ;
         text[len+1] = '\0';
         SetDlgItemText(hDlg,IDC_RESULT,text);
         break;	 
      case IDC_BUTTON+14:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
		 if(flag == 0 || flag==1){
           if(flag==3)
		     break;
           else
             len = strlen(text);
           text[len] = '.' ;
           text[len+1] = '\0';
           SetDlgItemText(hDlg,IDC_RESULT,text);
           flag=3;
	 	 }
         break;
      case IDC_BUTTON+15:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         sprintf(buffer,"%s",text);
         operation=4;
         flag=1;
         SetDlgItemText(hDlg,IDC_RESULT,"");
         break;
      case IDC_BUTTON+16:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         sprintf(buffer,"%s",text);
         operation=3;
         flag=1;
         SetDlgItemText(hDlg,IDC_RESULT,"");
         break;
      case IDC_BUTTON+17:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         sprintf(buffer,"%s",text);
         operation=2;
         flag=1;
         SetDlgItemText(hDlg,IDC_RESULT,"");
         break;
      case IDC_BUTTON+18:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         sprintf(buffer,"%s ",text);
         operation=1;
         flag=1;
         SetDlgItemText(hDlg,IDC_RESULT,"");
         break;
      case IDC_BUTTON+19:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         digit=sqrt(atof(text));
         TreatDlgItemText(hDlg,digit,result,buffer);
         break;
	  case IDC_BUTTON+20:
	  	 GetDlgItemText(hDlg,IDC_RESULT,text, 64);
		 digit = 100*atof(text);
		 TreatDlgItemText(hDlg,digit,result,buffer);
	  	 break;
      case IDC_BUTTON+21:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
         digit=1/atof(text);
         TreatDlgItemText(hDlg,digit,result,buffer);
         break;
      case IDC_BUTTON+22:
         GetDlgItemText(hDlg,IDC_RESULT,text, 64);
		 flag=2;
	     if(operation==1){
		    digit=atof(buffer)+atof(text);
	     }else if(operation==2){
            digit=atof(buffer)-atof(text);
         }else if(operation==3){
    	    digit=atof(buffer)*atof(text);
         }else if(operation==4){
            digit=atof(buffer)/atof(text);
         }else{
           operation=0;
           break;
        }
		operation=0;
		TreatDlgItemText(hDlg,digit,result,buffer);
        break;
	  case IDC_BUTTON+23:
	     break;
	  case IDC_BUTTON+24:
	     break;
	  case IDC_BUTTON+25:
	     break;   
	  case IDC_BUTTON+26:
	     break;
	  case IDC_BUTTON+27:
	     break;   
      }
	  break;
   case MSG_MAXIMIZE:
	  break;
   case MSG_MINIMIZE:
	  break;	
   case MSG_CLOSE:
      EndDialog (hDlg, 0);
      return 0;
   }
    
   return DefaultDialogProc (hDlg, message, wParam, lParam);
}

int MiniGUIMain (int argc, const char* argv[])
{
#ifdef _MGRM_PROCESSES
    JoinLayer(NAME_DEF_LAYER , "calculator" , 0 , 0);
#endif
    
    if (!InitMiniGUIExt()) {
        return 2;
    }
    DlgCalculator.hIcon= LoadIconFromFile (HDC_SCREEN, "images/notebook.ico", 0);
    DlgCalculator.hMenu = CreateCalcMenu();
	DlgCalculator.controls = Ctrlcalc;
    
    DialogBoxIndirectParam (&DlgCalculator, HWND_DESKTOP, CalculatorDialogBoxProc, 0L);

    MiniGUIExtCleanUp ();

    return 0;
}

#ifndef _LITE_VERSION
#include <minigui/dti.c>
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -