📄 mmicalculator.c
字号:
{
data->operate_number2[data->index]='-';
data->index++;
}
else
{
memset(tem_str,0,sizeof(tem_str));
if( data->operate_number2[0]=='-' )
{
strcpy( tem_str,data->operate_number2+1);
strcpy(data->operate_number2,tem_str);
data->index--;
}
else
{
strcpy(tem_str,"-");
strcat(tem_str,data->operate_number2);
strcpy(data->operate_number2,tem_str);
data->index++;
}
}
}
winShow(win);
break;
case KCD_HASH:
if( data->pointflag )
break;
if( !data->pointflag )
{
if( !data->flag )
{
if( (data->operate_number1[0]=='-')&&((strlen(data->operate_number1)==1)||(data->operate_number1[1]=='0')) )
break;
if( data->continues==TRUE )
{
data->continues=FALSE;
memset((char*)data->result,0,sizeof(data->result));
}
if( strlen(data->operate_number1) )
{
if( !data->index )
data->index++;
data->operate_number1[data->index]='.';
data->index++;
data->pointflag=TRUE;
}
}
else
{
if( (data->operate_number2[0]=='-')&&((strlen(data->operate_number2)==1)||(data->operate_number2[1]='0')) )
break;
if( strlen(data->operate_number2) )
{
if( !data->index )
data->index++;
data->operate_number2[data->index]='.';
data->index++;
data->pointflag=TRUE;
}
}
}
winShow(win);
break;
case KCD_MNUUP:
if( strlen(data->opera) )
break;
TRACE_EVENT("KCD_MNUUP");
if( (data->continues==TRUE)&&(!data->operaflag) )
{
if( strlen(data->SpecialResult) )
{
if( !data->sig )
{
strcpy((char*)data->operate_number1,"-");
strncat((char*)data->operate_number1,(char*)data->SpecialResult,MAXLEN);
}
else
strcpy((char*)data->operate_number1,(char*)data->SpecialResult);
}
else
{
if( !data->sig )
{
strcpy((char*)data->operate_number1,"-");
strncat((char*)data->operate_number1,(char*)data->result,MAXLEN);
}
else
strcpy((char*)data->operate_number1,(char*)data->result);
}
}
memset((char*)data->result,0,sizeof(data->result));
memset((char*)data->opera,0,sizeof(data->opera));
//data->opera='\0';
TRACE_EVENT(data->operate_number1);
if( (strlen(data->operate_number1)>1)||((strlen(data->operate_number1)==1)&&(data->operate_number1[0]!='0')) )
{
strcpy((char*)data->opera,"+");
data->pointflag=FALSE;
data->afterpoint=0;
data->flag=TRUE;
data->index=0;
data->resultflag=FALSE;
data->operaflag=TRUE;
winShow(win);
}
break;
case KCD_MNUDOWN:
if( strlen(data->opera) )
break;
if( (data->continues==TRUE)&&(!data->operaflag) )
{
if( strlen(data->SpecialResult) )
{
if( !data->sig )
{
strcpy((char*)data->operate_number1,"-");
strncat((char*)data->operate_number1,(char*)data->SpecialResult,MAXLEN);
}
else
{
TRACE_EVENT("KCD_MNUDOWN");
strcpy((char*)data->operate_number1,(char*)data->result);
TRACE_EVENT(data->operate_number1);
}
}
else
{
if( !data->sig )
{
strcpy((char*)data->operate_number1,"-");
strncat((char*)data->operate_number1,(char*)data->result,MAXLEN);
}
else
strcpy((char*)data->operate_number1,(char*)data->result);
}
}
memset((char*)data->result,0,sizeof(data->result));
memset((char*)data->opera,0,sizeof(data->opera));
//data->opera='\0';
if( (strlen(data->operate_number1)>1)||((strlen(data->operate_number1)==1)&&(data->operate_number1[0]!='0')) )
{
strcpy((char*)data->opera,"-");
data->pointflag=FALSE;
data->afterpoint=0;
data->flag=TRUE;
data->index=0;
data->resultflag=FALSE;
data->operaflag=TRUE;
winShow(win);
}
break;
case KCD_MNURIGHT:
if( strlen(data->opera) )
break;
if( (data->continues==TRUE)&&(!data->operaflag) )
{
if( strlen(data->SpecialResult) )
{
if( !data->sig )
{
strcpy((char*)data->operate_number1,"-");
strncat((char*)data->operate_number1,(char*)data->SpecialResult,MAXLEN);
}
else
strcpy((char*)data->operate_number1,(char*)data->result);
}
else
{
if( !data->sig )
{
strcpy((char*)data->operate_number1,"-");
strncat((char*)data->operate_number1,(char*)data->result,MAXLEN);
}
else
strcpy((char*)data->operate_number1,(char*)data->result);
}
}
memset((char*)data->result,0,sizeof(data->result));
memset((char*)data->opera,0,sizeof(data->opera));
//data->opera='\0';
if( (strlen(data->operate_number1)>1)||((strlen(data->operate_number1)==1)&&(data->operate_number1[0]!='0')) )
{
strcpy((char*)data->opera,"/");
data->pointflag=FALSE;
data->afterpoint=0;
data->flag=TRUE;
data->index=0;
data->resultflag=FALSE;
data->operaflag=TRUE;
winShow(win);
}
break;
case KCD_MNULEFT:
if( strlen(data->opera) )
break;
if( (data->continues==TRUE)&&(!data->operaflag) )
{
if( strlen(data->SpecialResult) )
{
if( !data->sig )
{
strcpy((char*)data->operate_number1,"-");
strncat((char*)data->operate_number1,(char*)data->SpecialResult,MAXLEN);
}
else
strcpy((char*)data->operate_number1,(char*)data->result);
}
else
{
if( !data->sig )
{
strcpy((char*)data->operate_number1,"-");
strncat((char*)data->operate_number1,(char*)data->result,MAXLEN);
}
else
strcpy((char*)data->operate_number1,(char*)data->result);
}
}
memset((char*)data->result,0,sizeof(data->result));
memset((char*)data->opera,0,sizeof(data->opera));
//data->opera='\0';
if( (strlen(data->operate_number1)>1)||((strlen(data->operate_number1)==1)&&(data->operate_number1[0]!='0')) )
{
strcpy((char*)data->opera,"*");
data->pointflag=FALSE;
data->afterpoint=0;
data->flag=TRUE;
data->index=0;
data->resultflag=FALSE;
data->operaflag=TRUE;
winShow(win);
}
break;
case KCD_RIGHT:
if( !data->flag )
{
if( (strlen(data->operate_number1)==1)&&(data->operate_number1[0]=='0') )
{
calculator_destroy(win);
break;
}
}
if( data->result[0]=='0' )
{
l=0;
}
else
{
l=strlen((char*)data->result);
}
if( strlen((char*)data->operate_number1)&&!l )
{
if( !data->flag )
{
if( strlen(data->SpecialResult) )
break;
data->afterpoint--;
if( data->afterpoint<0 )
data->afterpoint=0;
if( data->operate_number1[strlen((char*)data->operate_number1)-1]=='.' )
{
data->pointflag=FALSE;
}
data->operate_number1[strlen((char*)data->operate_number1)-1]='\0';
data->index=strlen((char*)data->operate_number1);
}
else
{
if( strlen((char*)data->operate_number2)>1||!((strlen(data->operate_number1)==1)&&(data->operate_number1[0]=='0')) )
{
if( data->pointflag )
data->afterpoint--;
if( data->operate_number2[strlen((char*)data->operate_number2)-1]=='.' )
{
data->pointflag=FALSE;
}
data->operate_number2[strlen((char*)data->operate_number2)-1]='\0';
data->index=strlen((char*)data->operate_number2);
}
else
{
strcpy(data->operate_number2,"0");
data->index=0;
memset((char*)data->opera,0,sizeof(data->opera));
TraceInt(strlen(data->SpecialResult));
if( strlen(data->SpecialResult) )
{
winShow(win);
break;
}
data->flag=!data->flag;
}
}
if( !strlen(data->operate_number1) )
{
strcpy(data->operate_number1,"0");
data->index=0;
}
winShow(win);
}
else
{
calculator_destroy(win);
}
break;
case KCD_OK:
case KCD_LEFT:
if( !strlen(data->opera) )
break;
data->leftkey_indication=1;
memset(data->SpecialResult,0,MAXLEN+MAXLEN);
if( strlen(data->operate_number1)&&strlen(data->operate_number2)&&(!data->resultflag) )
{
if( (data->opera[0]=='/')&&(strlen(data->operate_number2)==1)&&(data->operate_number2[0]=='0') )
{
dialog_info_init(&display_info);
display_info.TextId2 =TxtOverflow;//overflow
display_info.Time = FOREVER;
display_info.iconindex = REMIND_NORECORD;
display_info.Callback = (T_VOID_FUNC)NULL;
/*
* Call Info Screen
*/
info_dialog (win, &display_info);
SEND_EVENT(win, CALCULATOR_INIT, 0, 0);
}
else
{
TRACE_EVENT("Special expression");
memset(data->result,0,sizeof(data->result));
memset(string,0,sizeof(string));
data->sig=1;
TRACE_EVENT(data->operate_number1);
convert(data->operate_number1,string);
TRACE_EVENT(string);
/* i=0;
while((data->operate_number1[i]!='E')&&(i<strlen(data->operate_number1)))
i++;
TraceInt(strlen(data->operate_number1));
TraceInt(i);
if(i<strlen(data->operate_number1))
{
if(data->operate_number1[i+1]=='+')
{
strncpy(string,data->operate_number1,1);
strncat(string,data->operate_number1+2,i-2);
exponent[0]=0;
strcpy(exponent,data->operate_number1+i+2);
TRACE_EVENT(exponent);
l=atoi(exponent);
TraceInt(l);
for(j=0;j<l-i;j++)
strcat(string,"0");
TRACE_EVENT(string); */
if( strlen(string)>MAXLEN )
{
dialog_info_init(&display_info);
display_info.TextId2 =TxtOverflow;//overflow
display_info.Time = FOREVER;
display_info.iconindex = REMIND_NORECORD;
display_info.Callback = (T_VOID_FUNC)NULL;
/*
* Call Info Screen
*/
info_dialog (win, &display_info);
SEND_EVENT(win, CALCULATOR_INIT, 0, 0);
}
else
{
strcpy(data->operate_number1,string);
}
/* else
{
memset(exponent,0,2);
strcpy(exponent,data->operate_number1+i+2);
TRACE_EVENT(exponent);
l=atoi(exponent);
TraceInt(l);
strcpy(string,"0.");
for(j=0;j<l-1;j++)
strcat(string,"0");
strncat(string,data->operate_number1,1);
strncat(string,data->operate_number1+2,i-2);
TRACE_EVENT(string);
strcpy(data->operate_number1,string);
}
} */
memset(data->result,0,MAXLEN+MAXLEN);
data->sig=calculate1(data->operate_number1,data->operate_number2,data->opera,data->result);
TRACE_EVENT(data->result);
if( data->result[0]!='0' )
{
i=0;
j=0;
EndOfPoint=0;
while( data->result[i]!='.' )
i++;
if( i<strlen(data->result) )
{
while( (data->result[i]!='\0')&&(!EndOfPoint) )
{
i++;
j++;
if( j>5 )
{
EndOfPoint=1;
data->result[i]=0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -