- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
LabWindows/CVI虚拟仪器设计技术基本控件使用之:Ring 箭头设置
3:程序注释
① SetCtrlAttribute 函数设置控件属性。函数原型为:
int SetCtrlAttribute (int Panel_Handle, int Control_ID, int Control_Attribute, ...); Control_Attribute :控件属性。...:控件属性值。
② 程序优化
对于Ring 控件响应的arrow 回调函数而言,可进一步优化,将case 分支中的PANEL_RING_MENU 、PANEL_RING_RECESSEDMENU 和PANEL_RING_POPUPMENU 合并,以default 替代,则Ring 控件回调函数修改为:
int CVICALLBACK arrow (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{ //定义箭头的宽度或高度
int style; //定义箭头的数值
int value;
switch (event)
{
case EVENT_COMMIT:
// 判断设置箭头的宽度或高度
GetCtrlVal (panelHandle, PANEL_BINARYSWITCH, &style); // 当设置箭头属性为宽度时
if (style == 0)
{ // 判断响应哪一控件事件
switch (control)
{ // 普通Ring 控件
case PANEL_RING_PLAIN:
GetCtrlVal (panelHandle, control, &value);
SetCtrlAttribute (panel, control, 20472, value);
break;
// 其他Ring 控件
default:
GetCtrlVal (panelHandle, control, &value);
? SetCtrlAttribute (panel, control, 20475, value);
break;
}
}
// 当设置箭头属性为高度时
else
{
// 普通Ring 控件不能设置高度属性
if (control != PANEL_RING_PLAIN)
{
GetCtrlVal (panelHandle, control, &value);
SetCtrlAttribute (panel, control, 20476, value);
}
}
break;
}
return 0;
}
若将GetCtrlVal 函数提到前边,又可减少代码量,Ring 控件回调函数修改为:
int CVICALLBACK arrow (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
//定义箭头的宽度或高度
int style;
//定义箭头的数值
int value;
switch (event)
{
case EVENT_COMMIT:
// 判断设置箭头的宽度或高度
GetCtrlVal (panelHandle, PANEL_BINARYSWITCH, &style);
GetCtrlVal (panelHandle, control, &value);
// 当设置箭头属性为宽度时
if (style == 0)
{
// 判断响应哪一控件事件
switch (control)
{
// 普通Ring 控件
case PANEL_RING_PLAIN:
SetCtrlAttribute (panel, control, 20472, value);
break;
// 其他Ring 控件
default:
SetCtrlAttribute (panel, control, 20475, value);
break;
? }
}
// 当设置箭头属性为高度时
else
{
// 普通Ring 控件不能设置高度属性
if (control != PANEL_RING_PLAIN)
{
SetCtrlAttribute (panel, control, 20476, value);
}
}
break;
}
return 0;
}
上一篇:LabWindows/CVI虚拟仪器设计技术基本控件使用之:
Tab
控件
下一篇:LabWindows/CVI虚拟仪器设计技术场景与游戏设计之:
移动控件