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

LabWindows/CVI虚拟仪器设计技术基本控件使用之:回调函数

时间:11-13 来源:与非网 点击:

void *Reserved);
*HInstance:对于main 函数应为0;对于WinMain 函数应为hInstance ;对于DllMain 应为
hInstDLL。
*Argv[] :对应于main 函数的*argv[] 参数。
*Reserved:保留参数,设置为0。

一般在使用main 函数、WinMain 函数、DllMain 函数时,InitCVIRTE 函数的参数设置稍有不

同,其具体调用方式如下所示:

main 函数
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return –1; /* out of memory */ //用户程序
return 0;
} WinMain 函数
int __stdcall WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int
nCmdShow)
{
if (InitCVIRTE (hInstance, 0, 0) == 0)
return –1; /* out of memory */ //用户程序
return 0;
} DllMain 函数
int __stdcall DllMain (void *hinstDLL, int fdwReason, void *lpvReserved)

{
if (fdwReason == DLL_PROCESS_ATTACH)
{
if (InitCVIRTE (hinstDLL, 0, 0) == 0)
return 0;
//用户ATTACH 程序
}
else if (fdwReason == DLL_PROCESS_DETACH)
{
//用户DETACH 程序
CloseCVIRTE ();
}
return 1;
}

LabWindows/CVI 运行时库引擎主要用在程序发布,并安装在其他计算机上独立运行时。运行时库包括:User Interface Library、Advanced Analysis Library 、Formatting and I/O Library 、Utility Library、ANSI C Library 、RS-232 Library 、TCP Support Library 、Internet Library、Network Variable Library、DDE Support Library 、ActiveX Library 、DIAdem Connectivity Library 、TDM Streaming Library、.NET Library 等。

③ LoadPanel 函数装载用户界面文件(*.uir)或文本用户界面(*.tui)到内存中。装载后,面板不可见,需要调用DisplayPanel 函数来显示面板。

函数原型为:int LoadPanel (int Parent_Panel_Handle, char Filename[], int Panel_Resource_ID); Parent_Panel_Handle :父面板句柄。如果为0,则表示所装载的面板为顶层窗口;如果为面板句柄,则表示所装载的面板为该面板的子面板。

Filename[] :用户界面文件(*.uir )或文本用户界面(*.tui )的文件名。可以包含全部的路径名或只包含一个简单的文件名,如果为简单的文件名,则必须与工程文件在同一目录下。Panel_Resource_ID :面板常量名。

返回值:面板句柄。

④ DisplayPanel 函数将内存中装载的面板显示出来。函数原型为:

int DisplayPanel (int Panel_Handle);

Panel_Handle :面板句柄。

⑤ RunUserInterface 函数

运行用户界面并响应回调函数事件。RunUserInterface 在程序开始后始终运行,直到调用

QuitUserInterface 函数时才返回。函数原型为:

int RunUserInterface (void);

返回值:返回由用户在QuitUserInterface 函数的参数中设置的值。

⑥ QuitUserInterface 函数

QuitUserInterface 函数并不直接终止程序的运行,而是使RunUserInterface 函数返回一个特定值,并进入终止程序运行处理过程。

static int panelHandle;
int main (int argc, char *argv[])
{
int status;
if (InitCVIRTE (0, argv, 0) == 0)
return –1;
if ((panelHandle = LoadPanel (0, "sample.uir", PANEL)) < 0)
return –1;
DisplayPanel (panelHandle);
//返回值status 为10,即:QuitUserInterface 函数的参数设置值
status = 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 的参数值为10,即RunUserInterface 的返回值
QuitUserInterface (10);
break;
}
return 0;
}

⑦ DiscardPanel 函数释放面板资源,包含父面板下的子面板。函数原型为:

int DiscardPanel (int Panel_Handle);

Panel_Handle :面板句柄。

⑧ SetCtrlVal 函数设置控件值。函数原型为:

int SetCtrlVal (int Panel_Handle, int Control_ID, …);

Panel_Handle :面板句柄。

Control_ID:控件常量,通常在头文件中声明。…:设置值。

⑨ rand 函数产生0~32767 之间的伪随机数。函数原型为:

int rand (void);

返回值:伪随机数。

⑩ DeleteGraphPlot 函数删除控件所绘制的图形。函数

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

网站地图

Top