📄 sample7_answer.c
字号:
#include <gpib.h>
#include <ansi_c.h>
#include <userint.h>
#include <cvirte.h>
int panelHandle,Button,LED,Meter,Timer,Slide,
MenuBarHandle,SystemMenuID,QuitMenuItem,
SpeedMenuID,FastMenuItem,SlowMenuItem,
MediumMenuItem;
void BuildGUI(void);
int CVICALLBACK TimerCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2);
int CVICALLBACK MainCallback (int panelOrMenuBarHandle,
int controlOrMenuItemID,int event,
void *callbackData,int eventData1,
int eventData2);
int main (int argc, char *argv[])
{
int speed,panel,control;
if (InitCVIRTE (0, argv, 0) == 0)
return -1;
BuildGUI();
do
{
GetUserEvent (1, &panel, &control);
if(control==Button) break;
if(control==Slide)
{
GetCtrlVal(panelHandle,Slide,&speed);
SetMenuBarAttribute (MenuBarHandle, FastMenuItem, ATTR_CHECKED, 0);
SetMenuBarAttribute (MenuBarHandle, MediumMenuItem, ATTR_CHECKED, 0);
SetMenuBarAttribute (MenuBarHandle, SlowMenuItem, ATTR_CHECKED, 0);
if(speed==0)
{SetCtrlAttribute (panelHandle, Timer, ATTR_INTERVAL, 1.0);
SetMenuBarAttribute (MenuBarHandle, SlowMenuItem, ATTR_CHECKED, 1);
}
if(speed==1)
{SetCtrlAttribute (panelHandle, Timer, ATTR_INTERVAL, 0.5);
SetMenuBarAttribute (MenuBarHandle, MediumMenuItem, ATTR_CHECKED, 1);
}
if(speed==2)
{SetCtrlAttribute (panelHandle, Timer, ATTR_INTERVAL, 0.25);
SetMenuBarAttribute (MenuBarHandle, FastMenuItem, ATTR_CHECKED, 1);
}
}
} while (1);
return 0;
}
void BuildGUI(void)
{
panelHandle = NewPanel (0, "Sample7_answer", 100, 100, 220, 300);
MenuBarHandle = NewMenuBar (panelHandle);
SystemMenuID=NewMenu (MenuBarHandle, "S__ystem", -1);
SpeedMenuID=NewMenu (MenuBarHandle, "Sp__eed", -1);
QuitMenuItem = NewMenuItem (MenuBarHandle, SystemMenuID, "__Quit", -1,
VAL_MENUKEY_MODIFIER | 'Q', NULL, NULL);
FastMenuItem = NewMenuItem (MenuBarHandle, SpeedMenuID, "__Fast", -1,
VAL_MENUKEY_MODIFIER | 'F',
NULL, NULL);
MediumMenuItem = NewMenuItem (MenuBarHandle, SpeedMenuID, "__Medium",
-1, VAL_MENUKEY_MODIFIER | 'M',
NULL,NULL);
SlowMenuItem = NewMenuItem (MenuBarHandle, SpeedMenuID, "__Slow",
-1, VAL_MENUKEY_MODIFIER | 'S',
NULL,NULL);
SetMenuBarAttribute (MenuBarHandle, SlowMenuItem, ATTR_CHECKED, 1);
Button = NewCtrl (panelHandle, CTRL_SQUARE_COMMAND_BUTTON, "__Quit",
165, 165);
Meter = NewCtrl (panelHandle, CTRL_NUMERIC_METER, "Meter", 50,
45);
LED = NewCtrl (panelHandle, CTRL_ROUND_LED, "Over Run", 170, 60);
Slide = NewCtrl (panelHandle, CTRL_RING_VSLIDE, "Speed", 60, 260);
InsertListItem (panelHandle, Slide, 0, "Slow", 0);
InsertListItem (panelHandle, Slide, 1, "Medium", 1);
InsertListItem (panelHandle, Slide, 2, "Fast", 2);
SetCtrlAttribute (panelHandle, Slide, ATTR_HEIGHT, 120);
SetCtrlAttribute (panelHandle, Slide, ATTR_WIDTH,10 );
Timer = NewCtrl (panelHandle, CTRL_TIMER, "", 0, 0);
SetCtrlAttribute (panelHandle, Timer, ATTR_CALLBACK_FUNCTION_POINTER,
TimerCallback);
SetCtrlAttribute (panelHandle, Timer, ATTR_INTERVAL, 1.0);
SetActiveCtrl (panelHandle, Button);
InstallMainCallback (MainCallback, 0, 0);
DisplayPanel(panelHandle);
}
int CVICALLBACK MainCallback (int panelOrMenuBarHandle, int controlOrMenuItemID,
int event, void *callbackData,int eventData1,
int eventData2)
{
if((panelOrMenuBarHandle==MenuBarHandle)&&
(controlOrMenuItemID==QuitMenuItem))
{
SetActiveCtrl (panelHandle, Button);
FakeKeystroke (VAL_ENTER_VKEY);
}
if((panelOrMenuBarHandle==MenuBarHandle)&&
(controlOrMenuItemID==FastMenuItem))
{
SetCtrlVal (panelHandle, Slide, 2);
SetCtrlAttribute (panelHandle, Timer, ATTR_INTERVAL, 0.25);
SetMenuBarAttribute (MenuBarHandle, FastMenuItem, ATTR_CHECKED, 1);
SetMenuBarAttribute (MenuBarHandle, MediumMenuItem, ATTR_CHECKED, 0);
SetMenuBarAttribute (MenuBarHandle, SlowMenuItem, ATTR_CHECKED, 0);
}
if((panelOrMenuBarHandle==MenuBarHandle)&&
(controlOrMenuItemID==MediumMenuItem))
{
SetCtrlVal (panelHandle, Slide, 1);
SetCtrlAttribute (panelHandle, Timer, ATTR_INTERVAL, 0.5);
SetMenuBarAttribute (MenuBarHandle, FastMenuItem, ATTR_CHECKED, 0);
SetMenuBarAttribute (MenuBarHandle, MediumMenuItem, ATTR_CHECKED, 1);
SetMenuBarAttribute (MenuBarHandle, SlowMenuItem, ATTR_CHECKED, 0);
}
if((panelOrMenuBarHandle==MenuBarHandle)&&
(controlOrMenuItemID==SlowMenuItem))
{
SetCtrlVal (panelHandle, Slide, 0);
SetCtrlAttribute (panelHandle, Timer, ATTR_INTERVAL, 1.0);
SetMenuBarAttribute (MenuBarHandle, FastMenuItem, ATTR_CHECKED, 0);
SetMenuBarAttribute (MenuBarHandle, MediumMenuItem, ATTR_CHECKED, 0);
SetMenuBarAttribute (MenuBarHandle, SlowMenuItem, ATTR_CHECKED, 1);
}
if((panelOrMenuBarHandle==panelHandle)&&(event==EVENT_CLOSE))
{
SetActiveCtrl (panelHandle, Button);
FakeKeystroke (VAL_ENTER_VKEY);
}
return 0;
}
int CVICALLBACK TimerCallback (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
double max,min,value;
switch (event)
{
case EVENT_TIMER_TICK:
value=24.0*rand()/32767.0-12.0;
GetCtrlAttribute (panelHandle, Meter, ATTR_MAX_VALUE, &max);
GetCtrlAttribute (panelHandle, Meter, ATTR_MIN_VALUE, &min);
if((value>max)||((value<min)))
SetCtrlVal (panelHandle, LED, 1);
else
SetCtrlVal (panelHandle, LED, 0);
SetCtrlVal (panelHandle, Meter, value);
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -