LabWindows CVI Easy tab control使用教程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LabWindows/CVI中EasyTab Control的使用教程

2016年12月4日,星期日狄阁老

最近在使用国产板卡过程中发现,很多板卡的测试软件都用到了类似于tab的控件,但是子界面很多,又要团队完成的,如果还使用Tab控件就非常麻烦。在CVI使用中,发现CANVAS 控件和easy tab.fp可以完成Tab控件的任务,下面开始介绍如何使用Easytab control

先新建一个工程,再新建一个主界面和三个子界面,在主界面上添加一个CANVAS控件,再右下角load instruments,找到CVI安装目录下的Toolslib\custctrl下的easytab.fp,再在工程下添加这个fp。

首先介绍一下easytab.fp

双击这个fp.可以看到这个fp内的函数,最重要的两个函数:

1)EasyTab_ConvertFromCanvas (界面句柄, CANVAS的ID);

2)EasyTab_LoadPanels (参数,参数,…..);

EasyTab_ConvertFromCanvas函数简单,重点来说EasyTab_LoadPanels

参数1:Panel 来自下面这行代码

if ((panelHandle = LoadPanel (0, "EasyTabControlTest.uir", PANEL)) < 0) return -1;

参数2:Tab Control 来自这行代码

tabCtrl = EasyTab_ConvertFromCanvas (panelHandle, PANEL_CANVAS);

参数3:Row

该参数设置为1

参数4:File Name

指工程的.uir

参数5:Calling Module Handle

一般设置为常量:__CVIUserHInst

参数6:Panel IDs and Handle Pointers

该参数在要设置子界面的ID和句柄

例如:三个界面

EasyTab_LoadPanels (panelHandle, tabCtrl, 1, "EasyTabControlTest.uir", __CVIUserHInst,PANEL1, &panel1, PANEL2, &panel2, PANEL3, &panel3, 0);

运行后的界面:

代码如下:

#include

#include "easytab.h"

#include

#include

#include "EasyTabControlTest.h"

static int panelHandle,tabCtrl,ActPan;

int panel1,panel2,panel3,panel4;

int main (int argc, char *argv[])

{

if (InitCVIRTE (0, argv, 0) == 0)

return -1; /* out of memory */

if ((panelHandle = LoadPanel (0, "EasyTabControlTest.uir", PANEL)) < 0)

return -1;

tabCtrl = EasyTab_ConvertFromCanvas (panelHandle, PANEL_CANVAS);

EasyTab_LoadPanels (panelHandle, tabCtrl,1, "EasyTabControlTest.uir",

__CVIUserHInst, PANEL1, &panel1, PANEL2, &panel2, PANEL3, &panel3, 0);

EasyTab_SetAttribute (panelHandle, tabCtrl,

ATTR_EASY_TAB_STRETCH_TO_FIT, 0);

//InstallPopup(panelHandle);

DisplayPanel (panelHandle);

RunUserInterface ();

DiscardPanel (panelHandle);

return 0;

}

//退出事件

int CVICALLBACK QuitCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)

{

switch (event)

{

case EVENT_COMMIT:

QuitUserInterface (0);

break;

}

return 0;

}

//切换TAB的事件

int CVICALLBACK TabCtrlCallBack (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)

{

char ActPanOut[100];

switch (event)

{

case EVENT_TAB_CHANGED:

EasyTab_GetAttribute (panelHandle, tabCtrl ,

ATTR_EASY_TAB_ACTIVE_PANEL, &ActPan);

//EasyTab_GetAttribute (panelHandle, tabCtrl,

ATTR_EASY_TAB_META_FONT, mm);

Fmt (ActPanOut, "激活了第%d子界面", ActPan-1);

SetCtrlVal (panelHandle, PANEL_STRING, ActPanOut);

break;

}

return 0;

}

int CVICALLBACK AutosizeCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)

{

int status;

switch (event)

{

case EVENT_COMMIT:

status=EasyTab_AutoSize (panelHandle, tabCtrl);

break;

}

return 0;

}

int CVICALLBACK AddPanelCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)

{

switch (event)

{

case EVENT_COMMIT:

//&panel4 = NewPanel (panelHandle, "xx", 0, 0, 350, 500);

EasyTab_AddPanels (panelHandle, tabCtrl, 1,PANEL4,0,0);

break;

}

return 0;

}

//移除tab

int CVICALLBACK deltetCallback (int panel, int control, int event, void *callbackData, int eventData1, int eventData2)

相关文档
最新文档