微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > LabWindows/CVI虚拟仪器设计技术基本控件使用之: Tab 控件

LabWindows/CVI虚拟仪器设计技术基本控件使用之: Tab 控件

时间:11-13 来源:3721RD 点击:

switch (event)

{

case EVENT_COMMIT:

// 获得控件属性

GetCtrlAttribute (panel, control, ATTR_LABEL_TEXT, label);

// 获得当前激活页面索引

GetActiveTabPage (panelHandle, PANEL_TAB, &index);

// 通过索引获得当前页面句柄

GetPanelHandleFromTabPage (panelHandle, PANEL_TAB, index, &TabPanelHandle);

? // 如果当前页面中的按钮为"设置"时,执行以下操作

if (CompareStrings (label, 0, " 设置", 0, 1) == 0)

{

// 获得页面中指定值

GetCtrlVal (TabPanelHandle, TABPANEL_2_STRING, s);

// 设置当前页面中标签为指定值

SetTabPageAttribute (panelHandle, PANEL_TAB, index, ATTR_LABEL_TEXT, s);

}

// 如果当前页面中的按钮为"获取"时,执行以下操作

if (CompareStrings (label, 0, " 获取", 0, 1) == 0)

{

// 获得Tab 控件中页面数目

GetNumTabPages (panelHandle, PANEL_TAB, &count);

// 显示页面数目

SetCtrlVal (TabPanelHandle, TABPANEL_3_NUMERIC, count);

}

break;

}

return 0;

}

//显示风格回调函数

int CVICALLBACK style (int panel, int control, int event,

void *callbackData, int eventData1, int eventData2)

{

int kind;

switch (event)

{

case EVENT_COMMIT:

// 获得控件值

GetCtrlVal (panel, control, &kind);

// 设置Tabp 控件风格

SetCtrlAttribute (panelHandle, PANEL_TAB, ATTR_TABS_LOCATION, kind);

break;

}

return 0;

}

3:程序注释

① GetPanelHandleFromTabPage 函数获得Tab 页面句柄。函数原型为:

int GetPanelHandleFromTabPage (int Panel_Handle, int Control_ID, int Index, int

*Tab_Panel_Handle);

Panel_Handle:Tab 控件所在面板句柄。

Control_ID:Tab 控件ID。

Index:Tab 页面(标签页)索引,第一个页面为0,依次递增。注意,此值需要用户设定而非系统返回值。

*Tab_Panel_Handle :返回Tab 页面索引指定的页面句柄。

② GetActiveTabPage 函数获得当前激活的Tab 页面索引。函数原型为:int GetActiveTabPage (int Panel_Handle, int Control_ID, int *Active_Index);

*Active_Index :当前激活页面索引值,从0 开始计,–1 表示没有活动页面。

③ CompareStrings 函数

字符串比较函数。将字符串1 中从某一位置开始所组成的子串与字符串2 中从某一位置开始所组成的子串进行比较。函数原型为:

int CompareStrings (char String_1[], int String_1_Index, char String_2[], int String_2_Index, int
Case_Sensitive);
String_1[] :字符串1。
String_1_Index :子串1 起始位置。
String_2[] :字符串2。
String_2_Index :子串2 起始位置。
Case_Sensitive:是否区分大小写。
返回值:0 表示两子串相等,–1 表示子串1 小于子串2,1 表示子串1 大于子串2。

④ valset 回调函数

在valset 回调函数中编写了GetCtrlVal (TabPanelHandle, TABPANEL_NUMERICKNOB, &temp) 语句,值得注意的是,GetCtrlVal 函数Panel Handle 参数并非在程序前面声明的panelHandle, 而是采用了GetPanelHandleFromTabPage 函数的返回Tab 页面句柄TabPanelHandle,也可以利用控件回调函数传回的函数句柄panel 。Control ID 参数可以写成TABPANEL_NUMERICKNOB ,也可以利用控件回调函数传回的控件常量control 参数。此外,为了使数值设置与数值显示看起来同步,可以将event 事件中的EVENT_COMMIT 改写为EVENT_VAL_CHANGED ,修改后的回调函数如下:

int CVICALLBACK valset (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int temp;
switch (event)
{
case EVENT_VAL_CHANGED:
// 获得Tab 页面句柄
GetPanelHandleFromTabPage (panelHandle, PANEL_TAB, 0, &TabPanelHandle);
// 获得Tab 页面中控件值
GetCtrlVal (panel, control, &temp);
// 设置Tab 页面中控件值
SetCtrlVal (panel, TABPANEL_NUMERICTHERM, temp);
break;
}
return 0;
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top