• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 测试测量 > 技术文章 > LabWindows/CVI虚拟仪器设计技术基本控件使用之: Tab 控件

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

录入:edatop.com    点击:

 

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;
}

 

 

⑤ 具有相同常量名和回调函数的Command Button 按钮事件响应方式设计在面板设计中,Command Button 按钮在标签设置和Tab 数目页面出现了两次,分别为"设置"和"获取"按钮,其回调函数名称和常量名完全一致,只是标题不同,这是由于Tab 控件本身就是多面板的集合,类似于一个容器控件,Tab 页面以子面板的方式出现,造成了可以重命名不同控件的问题,虽然不利于控件事件的区分,但却能减少回调函数的数量,利于代码的优化。面板和控件在程序头文件中定义如下:

#define  PANEL  1
#define  PANEL_TAB  2
#define TABPANEL_NUMERICTHERM  2
#define TABPANEL_NUMERICKNOB  3
#define  TABPANEL_2_STRING  2
#define  TABPANEL_2_OKBUTTON  3
#define  TABPANEL_3_NUMERIC  2
#define  TABPANEL_3_OKBUTTON  3
#define  TABPANEL_4_RING  2

 

 

从以上代码可以看出,虽然两个控件在界面设计阶段具有相同的常量名,在由于所在的Tab 页面不同,系统生成的常量名并不相同,分别为TABPANEL_2_OKBUTTON 和TABPANEL_3_OKBUTTON ,但常量值是相同的且均为3,在相同回调函数下,只能通过控件的不同标题来区分所响应的事件。

 

(4)运行效果图

点击工具栏中的Debug Project 按钮,程序开始运行,其效果如图1-12 所示。

图1-12 运行效果图

 

点击浏览:矢量网络分析仪、频谱仪、示波器,使用操作培训教程

上一篇:LabWindows/CVI虚拟仪器设计技术场景与游戏设计之:时钟制作
下一篇:LabWindows/CVI虚拟仪器设计技术基本控件使用之:Ring 箭头设置

微波射频测量操作培训课程详情>>
射频和天线工程师培训课程详情>>

  网站地图