#include #include #include #include "Calc.h" static int panelHandle , arrayHandle; char *strVec[]={"0","1","2","3","4","5","6","7","8","9","."}; char DispStr[200]; double FirstOp, SecondOp; int Operator; int main (int argc, char *argv[]) { if (InitCVIRTE (0, argv, 0) == 0) return -1; /* out of memory */ if ((panelHandle = LoadPanel (0, "Calc.uir", PANEL)) < 0) return -1; DisplayPanel (panelHandle); arrayHandle = GetCtrlArrayFromResourceID (panelHandle, NUMARRAY); RunUserInterface (); DiscardPanel (panelHandle); return 0; } int CVICALLBACK quit (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: QuitUserInterface (0); break; case EVENT_RIGHT_CLICK: break; } return 0; } int CVICALLBACK Num (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { int Inx; switch (event) { case EVENT_COMMIT: GetCtrlArrayIndex (arrayHandle, panelHandle, control, &Inx); //strcat(DispStr,strVec[control-PANEL_N0]); strcat(DispStr,strVec[Inx]); SetCtrlVal (panelHandle, PANEL_STRING, DispStr); break; case EVENT_RIGHT_CLICK: break; } return 0; } int CVICALLBACK Operand (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: FirstOp = atof(DispStr); strcpy(DispStr, ""); Operator = control; break; } return 0; } int CVICALLBACK Equ (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) { switch (event) { case EVENT_COMMIT: SecondOp = atof(DispStr); switch (Operator) { case PANEL_PLUS: FirstOp += SecondOp; break; case PANEL_MINUS: FirstOp -= SecondOp; break; case PANEL_MUL: FirstOp *= SecondOp; break; case PANEL_DIV: FirstOp /= SecondOp; break; } sprintf(DispStr, "%f", FirstOp); SetCtrlVal (panelHandle, PANEL_STRING, DispStr); break; } return 0; }