?? calculator.c
字號:
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 + -