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

📄 sample4_2.c

📁 本文件是ni公司的labwindows/cvi软件的部分例子和源程序
💻 C
字号:
#include <formatio.h>#include <utility.h>#include <ansi_c.h>#include <cvirte.h>		/* Needed if linking in external compiler; harmless otherwise */#include <userint.h>#include "sample4_2.h"static int panelHandle;int Display_all=1;  //switch init on ,display all event message except timer eventint IsClickCtrl (int panel, int control, int x, int y)  ;void AppendTextClick (char* event_gen, int eventDat1, int eventDat2)    ;void AppendText (char* event_gen)  ;int main (int argc, char *argv[]){	if (InitCVIRTE (0, argv, 0) == 0)	/* Needed if linking in external compiler; harmless otherwise */		return -1;	/* out of memory */	if ((panelHandle = LoadPanel (0, "sample4_2.uir", PANEL)) < 0)		return -1;	DisplayPanel (panelHandle);	RunUserInterface ();	return 0;}//callback fun of switch controlint CVICALLBACK Switch (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){       switch (event) {        case EVENT_LEFT_CLICK :            AppendTextClick("选择开关   左键单击", eventData1, eventData2);            break;        case EVENT_RIGHT_CLICK :            AppendTextClick("选择开关    右键单击", eventData1, eventData2);            break;        case EVENT_LEFT_DOUBLE_CLICK :            AppendTextClick("选择开关    左键双击 ", eventData1, eventData2);            break;        case EVENT_RIGHT_DOUBLE_CLICK :            AppendTextClick("选择开关    右键双击", eventData1, eventData2);            break;        case EVENT_GOT_FOCUS :            AppendText("选择开关    获得焦点");            break;        case EVENT_LOST_FOCUS :            AppendText("选择开关    失去焦点");            break;        case EVENT_VAL_CHANGED :            AppendText("选择开关    值变化");            break;        case EVENT_COMMIT :        	GetCtrlVal (panelHandle, PANEL_SWITCH, &Display_all);                AppendText("选择开关    状态切换");            break;        }        	return 0;}//callback of exit buttonint CVICALLBACK Exit (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	switch (event)	{		case EVENT_COMMIT:			QuitUserInterface (0);			break;		case EVENT_GOT_FOCUS :            AppendText("结束按纽    获得焦点");            break;        case EVENT_LOST_FOCUS :            AppendText("结束按纽    失去焦点");            break;		 	}	return 0;}//callback of timer eventint CVICALLBACK TimeFun (int panel, int control, int event,		void *callbackData, int eventData1, int eventData2){	int x, y, left, right, keys, panelX, panelY, ctrlX, ctrlY;	int rect_top,rect_left,height,width;    char coords[50];    switch (event)     {        case EVENT_TIMER_TICK:            /* Report global coords and button / key states */             GetGlobalMouseState (NULL, &x, &y, &left, &right, &keys);            SetCtrlVal (panel, PANEL_LEFT, left);            SetCtrlVal (panel, PANEL_RIGHT, right);            sprintf (coords, "(x=%ld,y=%ld)", x, y);            SetCtrlVal (panel, PANEL_Absolute, coords);            SetCtrlVal (panel, PANEL_SHIFT, keys & VAL_SHIFT_MODIFIER);            SetCtrlVal (panel, PANEL_CTRL, keys & VAL_MENUKEY_MODIFIER);              /* Report coords relative to panel */            GetRelativeMouseState (panel, 0, &panelX, &panelY, NULL,                                   NULL, NULL);            sprintf (coords, "(x=%ld,y=%ld)", panelX, panelY);            SetCtrlVal (panel, PANEL_Raletive_Panel, coords);            /* Report coords relative to help button */            GetRelativeMouseState (panel, PANEL_MESSAGEBOX, &ctrlX, &ctrlY, NULL,                                   NULL, NULL);            sprintf (coords, "(x=%ld,y=%ld)", ctrlX, ctrlY);            SetCtrlVal (panel, PANEL_Raletive_List, coords);            /* Change mouse cursor if we are over panel or MESSAGELIST, */            /* and this panel is the active panel.                      */            if (GetActivePanel() == panel)            {                if (IsClickCtrl (panel, 0, panelX, panelY))                 {                    if (IsClickCtrl (panel, PANEL_MESSAGEBOX, ctrlX, ctrlY))                        SetMouseCursor (VAL_OPEN_HAND_CURSOR);                    else            						SetMouseCursor (VAL_CROSS_HAIR_CURSOR );                                        }                else                    SetMouseCursor (VAL_DEFAULT_CURSOR);            }            else                SetMouseCursor (VAL_DEFAULT_CURSOR);               //Display timer exent            if(Display_all==0)            	AppendText("定时器时间到");    			break;	}	return 0;}//panel callbackint CVICALLBACK panel (int panel, int event, void *callbackData,		int eventData1, int eventData2){    char keypushed[100];    switch (event) {        case EVENT_LEFT_CLICK :	               AppendTextClick("面板    左键单击", eventData1, eventData2);            break;        case EVENT_RIGHT_CLICK :            AppendTextClick("面板    右键单击", eventData1, eventData2);            break;        case EVENT_LEFT_DOUBLE_CLICK :            AppendTextClick("面板    左键双击", eventData1, eventData2);            break;        case EVENT_RIGHT_DOUBLE_CLICK :            AppendTextClick("面板    右键双击", eventData1, eventData2);            break;        case EVENT_KEYPRESS :            SetCtrlVal (panelHandle, PANEL_SHIFT,  eventData1 & VAL_SHIFT_MODIFIER);            SetCtrlVal (panelHandle, PANEL_CTRL,  eventData1 & VAL_MENUKEY_MODIFIER);              if ((eventData1 & VAL_ASCII_KEY_MASK) != 0){                sprintf (keypushed, "键盘  %c 按下 \n", eventData1);                SetCtrlVal (panelHandle, PANEL_MESSAGEBOX, keypushed);            }            break;        case EVENT_PANEL_SIZE :            AppendText("面板    改变大小");            break;        case EVENT_PANEL_MOVE :            AppendText("面板    移动");            break;        case EVENT_CLOSE :            AppendText("面板    关闭");            break;        }	return 0;}//determine whether the mouse is on controlint IsClickCtrl (int panel, int control, int x, int y){    int height, width;    if ((x < 0) || (y < 0))        return 0;    if (control == 0)     {        GetPanelAttribute (panel, ATTR_HEIGHT, &height);        GetPanelAttribute (panel, ATTR_WIDTH, &width);    }    else     {        GetCtrlAttribute (panel, control, ATTR_HEIGHT, &height);        GetCtrlAttribute (panel, control, ATTR_WIDTH, &width);    }    if ((y < height) && (x < width))        return 1;    else        return 0;}//add message to text boxvoid AppendTextClick (char* event_gen, int eventDat1, int eventDat2){    char buf[100];        Fmt(buf, "%s<%s  Y 坐标= %i,  X 坐标= %i\n",event_gen, eventDat1, eventDat2);    SetCtrlVal (panelHandle, PANEL_MESSAGEBOX, buf);}void AppendText (char* event_gen){    char buf[100];    Fmt(buf, "%s<%s\n", event_gen);    SetCtrlVal (panelHandle, PANEL_MESSAGEBOX, buf);}

⌨️ 快捷键说明

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