📄 sample2.c
字号:
#include <utility.h>
#include <cvirte.h>
#include <userint.h>
#include "sample2.h"
static int panelHandle;
//定义全局变量,用来储存测试面板的句柄
static int testpanelHandle;
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return -1;
if ((panelHandle = LoadPanel (0, "sample2.uir", PANEL)) < 0)
return -1;
DisplayPanel (panelHandle);
//添加代码,初始化变量
testpanelHandle=-1;
RunUserInterface ();
return 0;
}
int CVICALLBACK PanelCallback (int panel, int event, void *callbackData,
int eventData1, int eventData2)
{
switch (event)
{
case EVENT_CLOSE:
//退出消息循环
QuitUserInterface (0);
break;
}
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;
}
return 0;
}
int CVICALLBACK ShowPanel (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
char title[20];
switch (event)
{
case EVENT_COMMIT:
//如果测试面板已经显示,退出
if(testpanelHandle<0)
{
//从String控件中取值
GetCtrlVal (panel, PANEL_TITLE, title);
if(control==PANEL_SHOWCHILDPANEL)
{
//以子面板的形式加载测试面板
testpanelHandle=LoadPanel (panel, "sample2.uir", TESTPANEL);
}
if(control==PANEL_SHOWPARENTPANEL)
{
//以父面板的形式加载测试面板
testpanelHandle=LoadPanel (0, "sample2.uir", TESTPANEL);
}
//设置面板标题属性
SetPanelAttribute (testpanelHandle, ATTR_TITLE, title);
DisplayPanel(testpanelHandle);
}
break;
}
return 0;
}
int CVICALLBACK RunProgram (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int i;
switch (event)
{
case EVENT_COMMIT:
//从Ring控件中取值
GetCtrlVal (panel, PANEL_PROGRAM, &i);
//调用执行可执行文件函数LaunchExecutable,
//根据Ring控件的值设置不同的参数
//函数参数是可执行文件的路径和命令参数
switch(i)
{
case 0:
LaunchExecutable ("C:\\WINDOWS\\NOTEPAD.EXE");
break;
case 1:
LaunchExecutable ("C:\\Program Files\\Accessories\\MSPAINT.EXE");
break;
case 2:
LaunchExecutable ("C:\\WINDOWS\\CALC.EXE");
break;
}
break;
}
return 0;
}
int CVICALLBACK EnablePanel (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int i;
switch (event)
{
case EVENT_COMMIT:
//获取复选框控件自身的值
GetCtrlVal (panel, control, &i);
//设置控件TITLE、SHOWPARENTPANEL、SHOWCHILDPANEL有效属性
SetCtrlAttribute (panel, PANEL_TITLE, ATTR_DIMMED, i);
SetCtrlAttribute (panel, PANEL_SHOWPARENTPANEL, ATTR_DIMMED, i);
SetCtrlAttribute (panel, PANEL_SHOWCHILDPANEL, ATTR_DIMMED, i);
break;
}
return 0;
}
int CVICALLBACK EnableProgram (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int i;
switch (event)
{
case EVENT_COMMIT:
//获取复选框控件自身的值
GetCtrlVal (panel, control, &i);
//设置控件RUNPRIGRAM、PROGRAM有效属性
SetCtrlAttribute (panel, PANEL_RUNPRIGRAM, ATTR_DIMMED, i);
SetCtrlAttribute (panel, PANEL_PROGRAM, ATTR_DIMMED, i);
break;
}
return 0;
}
int CVICALLBACK Close (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
switch (event)
{
case EVENT_COMMIT:
//关闭测试面板
DiscardPanel (panel);
//给测试面板句柄变量赋值,表示测试面板关闭
testpanelHandle=-1;
break;
}
return 0;
}
//以下代码是本章习题和上机练习题2的答案
//VisiblePanel和VisibleProgram函数实现设置控件的可见属性
int CVICALLBACK VisiblePanel (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int i;
switch (event)
{
case EVENT_COMMIT:
//获取控件VISIBLEPANEL的值
GetCtrlVal (panel, control, &i);
//设置控件TITLE、SHOWPARENTPANEL、SHOWCHILDPANEL可见属性
SetCtrlAttribute (panel, PANEL_TITLE, ATTR_VISIBLE, !i);
SetCtrlAttribute (panel, PANEL_SHOWPARENTPANEL, ATTR_VISIBLE, !i);
SetCtrlAttribute (panel, PANEL_SHOWCHILDPANEL, ATTR_VISIBLE, !i);
break;
}
return 0;
}
int CVICALLBACK VisibleProgram (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int i;
switch (event)
{
case EVENT_COMMIT:
//获取控件VISIBLEPROGRAM的值
GetCtrlVal (panel, control, &i);
//设置控件RUNPRIGRAM、PROGRAM可见属性
SetCtrlAttribute (panel, PANEL_RUNPRIGRAM, ATTR_VISIBLE, !i);
SetCtrlAttribute (panel, PANEL_PROGRAM, ATTR_VISIBLE, !i);
break;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -