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

📄 calc.c

📁 labview程序编程技巧演示
💻 C
字号:
#include "toolbox.h"
#include <utility.h>
#include "smartread4.h"
#include <formatio.h>
#include <ansi_c.h>
#include <cvirte.h>		
#include <userint.h>
#include "calc.h"
static int aboutpanelhandle;
static int menubarhandle;
static int panelHandle;
static char str1[50];
static char str2[50];
static double strvalue1;
static double strvalue2;
static double strvalue3;
static topflag=0;			 //显示在最前方
static int flag;

void setvalue (void);

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);
	
	menubarhandle = GetPanelMenuBar (panelHandle);
	SmartRead_InitialAuth (panelHandle, -1, -1, -1, "", "","", "");  
	
	RunUserInterface ();
	DiscardPanel (panelHandle);
	return 0;
}

int CVICALLBACK panelcb (int panel, int event, void *callbackData,
		int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_RIGHT_CLICK:
			RunPopupMenu (GetPanelMenuBar (panelHandle), MENUBAR_EDIT, panelHandle, eventData1, eventData2, 0, 0, 0, 0);
			
			break;
		case EVENT_CLOSE:
			SmartRead_Close();  
			QuitUserInterface (0);
			break;
	}
	return 0;
}

int CVICALLBACK clear (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:
			str1[0]='\0';
			str2[0]='\0'; 
			strvalue1=0;
			strvalue2=0;
			strvalue3=0;
			flag=0;
			SetCtrlVal (panelHandle, PANEL_STRING, "");
			SmartRead_Speak("清零", 11, 0, -1, -1, 1, "");
			break;
	}
	return 0;
}

int CVICALLBACK cmd_7 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char labeltext[2];
	switch (event)
	{
		case EVENT_COMMIT:
			GetCtrlAttribute (panelHandle, PANEL_CMD_7, ATTR_LABEL_TEXT, labeltext);
			SmartRead_Speak("7", 11, 0, -1, -1, 1, "");
			strcat (str1, labeltext);
			setvalue ();
			break;
	}
	return 0;
}

int CVICALLBACK cmd_8 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char labeltext[2];
	switch (event)
	{
		case EVENT_COMMIT:
			GetCtrlAttribute (panelHandle, PANEL_CMD_8, ATTR_LABEL_TEXT, labeltext);
			SmartRead_Speak("8", 11, 0, -1, -1, 1, "");
			strcat (str1, labeltext);
			setvalue ();
			break;
	}
	return 0;
}

int CVICALLBACK cmd_9 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char labeltext[2];
	switch (event)
	{
		case EVENT_COMMIT:
			GetCtrlAttribute (panelHandle, PANEL_CMD_9, ATTR_LABEL_TEXT, labeltext);
			SmartRead_Speak("9", 11, 0, -1, -1, 1, "");
			strcat (str1, labeltext);
			setvalue ();
			break;
	}
	return 0;
}

int CVICALLBACK cmd_4 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char labeltext[2];
	switch (event)
	{
		case EVENT_COMMIT:
			GetCtrlAttribute (panelHandle, PANEL_CMD_4, ATTR_LABEL_TEXT, labeltext);
			SmartRead_Speak("4", 11, 0, -1, -1, 1, "");
			strcat (str1, labeltext);
			setvalue ();
			break;
	}
	return 0;
}

int CVICALLBACK cmd_5 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char labeltext[2];
	switch (event)
	{
		case EVENT_COMMIT:
			GetCtrlAttribute (panelHandle, PANEL_CMD_5, ATTR_LABEL_TEXT, labeltext);
			SmartRead_Speak("5", 11, 0, -1, -1, 1, "");
			strcat (str1, labeltext);
			setvalue ();
			break;
	}
	return 0;
}

int CVICALLBACK cmd_6 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char labeltext[2];
	switch (event)
	{
		case EVENT_COMMIT:
			GetCtrlAttribute (panelHandle, PANEL_CMD_6, ATTR_LABEL_TEXT, labeltext);
			SmartRead_Speak("6", 11, 0, -1, -1, 1, "");
			strcat (str1, labeltext);
			setvalue ();
			break;
	}
	return 0;
}

int CVICALLBACK cmd_1 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char labeltext[2];
	switch (event)
	{
		case EVENT_COMMIT:
			GetCtrlAttribute (panelHandle, PANEL_CMD_1, ATTR_LABEL_TEXT, labeltext);
			SmartRead_Speak("1", 11, 0, -1, -1, 1, "");
			strcat (str1, labeltext);
			setvalue ();
			break;
	}
	return 0;
}

int CVICALLBACK cmd_2 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char labeltext[2];
	switch (event)
	{
		case EVENT_COMMIT:
			GetCtrlAttribute (panelHandle, PANEL_CMD_2, ATTR_LABEL_TEXT, labeltext);
			SmartRead_Speak("2", 11, 0, -1, -1, 1, "");
			strcat (str1, labeltext);
			setvalue ();
			break;
	}
	return 0;
}

int CVICALLBACK cmd_3 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char labeltext[2];
	switch (event)
	{
		case EVENT_COMMIT:
			GetCtrlAttribute (panelHandle, PANEL_CMD_3, ATTR_LABEL_TEXT, labeltext);
			SmartRead_Speak("3", 11, 0, -1, -1, 1, "");
			strcat (str1, labeltext);
			setvalue ();
			break;
	}
	return 0;
}

int CVICALLBACK cmd_0 (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char labeltext[2];
	switch (event)
	{
		case EVENT_COMMIT:
			GetCtrlAttribute (panelHandle, PANEL_CMD_0, ATTR_LABEL_TEXT, labeltext);
			SmartRead_Speak("0", 11, 0, -1, -1, 1, "");
			strcat (str1, labeltext);
			setvalue ();
			break;
	}
	return 0;
}

int CVICALLBACK cmd_dot (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	char labeltext[2];
	switch (event)
	{
		case EVENT_COMMIT:
			GetCtrlAttribute (panelHandle, PANEL_CMD_DOT, ATTR_LABEL_TEXT, labeltext);
			SmartRead_Speak(".", 11, 0, -1, -1, 1, "");
			strcat (str1, labeltext);
			setvalue ();
			break;
	}
	return 0;
}

int CVICALLBACK cmd_div (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:
			SmartRead_Speak("除以", 11, 0, -1, -1, 1, "");
			GetCtrlVal (panelHandle, PANEL_STRING, str1);
			Fmt (&strvalue1, "%f<%s", str1);
		    str1[0]='\0';
			SetCtrlVal (panelHandle, PANEL_STRING, "");
			flag=4;
			break;
	}
	return 0;
}

int CVICALLBACK cmd_mul (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:
			SmartRead_Speak("乘以", 11, 0, -1, -1, 1, "");
			GetCtrlVal (panelHandle, PANEL_STRING, str1);
			Fmt (&strvalue1, "%f<%s", str1);
		    str1[0]='\0';
			SetCtrlVal (panelHandle, PANEL_STRING, "");
			flag=3;
			break;
	}
	return 0;
}

int CVICALLBACK cmd_minus (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:
			SmartRead_Speak("减去", 11, 0, -1, -1, 1, "");
			GetCtrlVal (panelHandle, PANEL_STRING, str1);
			Fmt (&strvalue1, "%f<%s", str1);
		    str1[0]='\0';
			SetCtrlVal (panelHandle, PANEL_STRING, "");
			flag=2;
			break;
	}
	return 0;
}

int CVICALLBACK cmd_plus (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:
			SmartRead_Speak("加上", 11, 0, -1, -1, 1, "");
			GetCtrlVal (panelHandle, PANEL_STRING, str1);
			Fmt (&strvalue1, "%f<%s", str1);
		    str1[0]='\0';
			SetCtrlVal (panelHandle, PANEL_STRING, "");
			flag=1;
			break;
	}
	return 0;
}

int CVICALLBACK cmd_sqrt (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:
			SmartRead_Speak("开方等于", 11, 0, -1, -1, 1, ""); 
			Delay (1.5);
			GetCtrlVal (panelHandle, PANEL_STRING, str1);
			Fmt (&strvalue1, "%f<%s", str1);
		    str1[0]='\0';
			SetCtrlVal (panelHandle, PANEL_STRING, "");
			strvalue2=sqrt(strvalue1);
			Fmt (str2, "%s<%f", strvalue2);
			SetCtrlVal (panelHandle, PANEL_STRING, str2);
			SmartRead_Speak(str2, 11, 0, -1, -1, 1, "");
			str2[0]='\0'; 
			break;
	}
	return 0;
}

int CVICALLBACK cmd_percent (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:
			SmartRead_Speak("等于", 11, 0, -1, -1, 1, ""); 
			Delay (1);
			GetCtrlVal (panelHandle, PANEL_STRING, str1);
			Fmt (&strvalue1, "%f<%s", str1);
		    str1[0]='\0';
			SetCtrlVal (panelHandle, PANEL_STRING, "");
			strvalue2=100*(strvalue1);
			Fmt (str2, "%s<%f", strvalue2);
			strcat (str2, "%");
			SetCtrlVal (panelHandle, PANEL_STRING, str2);
			SmartRead_Speak(str2, 11, 0, -1, -1, 1, "");
			str2[0]='\0'; 
			break;
	}
	return 0;
}

int CVICALLBACK cmd_daoshu (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:
			SmartRead_Speak("倒数等于", 11, 0, -1, -1, 1, ""); 
			Delay (1.5);			
			GetCtrlVal (panelHandle, PANEL_STRING, str1);
			Fmt (&strvalue1, "%f<%s", str1);
		    str1[0]='\0';
			SetCtrlVal (panelHandle, PANEL_STRING, "");
			strvalue2=1/(strvalue1);
			Fmt (str2, "%s<%f", strvalue2);
			SetCtrlVal (panelHandle, PANEL_STRING, str2);
			SmartRead_Speak(str2, 11, 0, -1, -1, 1, "");
			str2[0]='\0'; 
			break;
	}
	return 0;
}

int CVICALLBACK cmd_equal (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:
			SmartRead_Speak("等于", 11, 0, -1, -1, 1, "");
			Delay (1);
			GetCtrlVal (panelHandle, PANEL_STRING, str1);
			Fmt (&strvalue2, "%f<%s", str1);
		    str1[0]='\0';
			SetCtrlVal (panelHandle, PANEL_STRING, "");
			switch (flag)
			{
				case 1:
					strvalue3=strvalue1+strvalue2;
					Fmt (str2, "%s<%f", strvalue3);
					SetCtrlVal (panelHandle, PANEL_STRING, str2);
					SmartRead_Speak(str2, 11, 0, -1, -1, 1, "");
					str2[0]='\0';					
					break;
				case 2:
					strvalue3=strvalue1-strvalue2;
					Fmt (str2, "%s<%f", strvalue3);
					SetCtrlVal (panelHandle, PANEL_STRING, str2);
					SmartRead_Speak(str2, 11, 0, -1, -1, 1, "");
					str2[0]='\0';					
					break;
				case 3:
					strvalue3=strvalue1*strvalue2;
					Fmt (str2, "%s<%f", strvalue3);
					SetCtrlVal (panelHandle, PANEL_STRING, str2);
					SmartRead_Speak(str2, 11, 0, -1, -1, 1, "");
					str2[0]='\0';					
					break;
				case 4:
					strvalue3=strvalue1/strvalue2;
					Fmt (str2, "%s<%f", strvalue3);
					SetCtrlVal (panelHandle, PANEL_STRING, str2);
					SmartRead_Speak(str2, 11, 0, -1, -1, 1, "");
					str2[0]='\0';
					break;
				default:
					
					break;
			}
			
			break;
	}
	return 0;
}

void CVICALLBACK editcopy (int menuBar, int menuItem, void *callbackData,
		int panel)
{
    char strings[50];
	GetCtrlVal (panelHandle, PANEL_STRING, strings);
	ClipboardPutText (strings);
	
}

void CVICALLBACK editexit (int menuBar, int menuItem, void *callbackData,
		int panel)
{
	QuitUserInterface (0);
}

void CVICALLBACK editalwaystop (int menuBar, int menuItem, void *callbackData,
		int panel)
{
	if (topflag)
	{
		SetMenuBarAttribute (menubarhandle, MENUBAR_EDIT_EDITALWATYSTOP, ATTR_CHECKED, 0);
		SetPanelAttribute (panelHandle, ATTR_FLOATING, VAL_FLOAT_NEVER);
		topflag=0;
	}
	else
	{
		SetMenuBarAttribute (menubarhandle, MENUBAR_EDIT_EDITALWATYSTOP, ATTR_CHECKED, 1);
		SetPanelAttribute (panelHandle, ATTR_FLOATING, VAL_FLOAT_ALWAYS);
		topflag=1;
	}

}

void CVICALLBACK helpabout (int menuBar, int menuItem, void *callbackData,
		int panel)
{
	unsigned long availablevirtual;
	unsigned long availablepagefile;
	unsigned long availablephysical;
	unsigned long totalvirtal;
	unsigned long totalpagefile;
	unsigned long totalphysical;
	unsigned long percentload;
	char tp[50];
	aboutpanelhandle = LoadPanel (0, "calc.uir", PANEL_ABOU);
	InstallPopup (aboutpanelhandle);
	GetMemoryInfo (&percentload, &totalphysical, &totalpagefile, &totalvirtal, &availablephysical, &availablepagefile, &availablevirtual);
	totalphysical=totalphysical/1000;
	Fmt (tp, "%s<%d", totalphysical);
	strcat (tp, " KB");
	SetCtrlVal (aboutpanelhandle, PANEL_ABOU_TEXTMSG_MEMO, tp);
}

void setvalue (void)
{
	SetCtrlVal (panelHandle, PANEL_STRING, "");
	SetCtrlVal (panelHandle, PANEL_STRING, str1);
}

int CVICALLBACK ok (int panel, int control, int event,
		void *callbackData, int eventData1, int eventData2)
{
	switch (event)
	{
		case EVENT_COMMIT:
			DiscardPanel (aboutpanelhandle);
			break;
	}
	return 0;
}

⌨️ 快捷键说明

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