📄 sample4_2.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 + -