第二讲 Labwindows虚拟仪器仪器面板及常用面板函数

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二讲虚拟仪器常用仪器面板在Labwindows/CVI集成开发环境,能够非常容易地创建出应用程序的图形用户界面,图形用户界面包含有面板、控件和菜单条等。面板和控件是虚拟仪的重要组成部分。一个仪器可包含多个仪器面板,每个面板上可以包含有多个不同的控件。而面板本身也是一个控件。虚拟面板的简要说明:仪器面板的“底”:又称桌面,空白仪器面板Panel控件;面板制作:在空白仪器面板上防止各种控件,并设置控件的属性,如名称刻度等;面板上的器件:CVI控件,如Numeric控件、CommandButton控件等;对应面板的内部结构:多种程序段操作方式:鼠标或键盘操作。2.1面板的属性创建面板后,双击面板或者选中面板后选择菜单【Edit】/【Pandel】将弹出面板属性编辑对话框。面板属性编辑对话框包括四个部分,如图2.1所示;:图2.1仪器面板属性设置窗口1、仪器面板的属性分为4个部分,1)SourceCodeConnection(源代码连接部分):完成控件名称和回调函数名称的设置。ConstantName:控件名称,字母必须是大写,该名称是源程序访问该控件的标志;CallbackFunction:回调函数名称,大小写均可。2)PanelSettings(面板设置部分):可完成仪器面板的标题、位置、长度等内容的设置。当属性值改变时,对应的变化立即体现在窗口右上方“QuickEditWindow”栏目中。PanelTitle:仪器面板的标题;MenuBar:表示仪器面板是否有菜单,如果没有菜单,选择“None”,若有菜单,则选择菜单的名称。CloseControl:选择具有关机功能的控件;Top:Panel距窗口边框的上边距;Left:Panel距窗口边框的左边距;Height:Panel的高度;Width:Panel的宽度;ScrollBar:设置Panel的水平或垂直滚动条;Auto-CenterVertically:当调入Panel时,在垂直中央位置显示仪器面板;Auto-CenterHorizontally:当调入Panel时,在水平中央位置显示仪器面板;OtherAttributes....:其它属性设置,如图2.2所示。在面板编辑框内按下其他属性按钮(OtherAttributes),弹出其他属性对话框,如图2.2面板其它属性设置其他厲性设置对话框中各设置项含义如表2.1所示:表2.1其他厲性设置对话框中各设置项含义2)在面板属性编辑框内按下标题风格按钮(TitleStyle),将弹出标题属性对话框,如图2.3所示。图2.3名称功能Sizable是否可以改变大小Movable是否可以移动CanMaximize是否可以最大化CanMinimize是否可以最小化TitleBarVisible标题栏是否可见HasTaskbarButton是否有任务栏按钮ConformtoSystemColor是否与系统顔色一致,选中则不能改变面板顔色ScaleContentOnResize改变面板大小时面板上的内容是否和面板一起放MinPanelHeightWhenScaling改变面板大小时面板的最小高度MinPanelWidthWhenScaling改变面板大小时面板的最小宽度ResolutionAdjustment(%)精度调整FloatingStyle选择面板显示时是否在最上面3)AttributesforChildPanels:子面板属性设置部分可完成子面板外观属性的设置如图2.4所示(只有面板为子面板时才起作用)。FrameStyle:选择仪器边框的外观类型,共有6种选择方式;FrameThickness:Panel边框的宽度,最小为1,最大为10;TitleBarThickness:设置标题栏的宽度,不选中SizeTitleBarHeighttoFont时有效;SizeTitleBarHeighttoFont:设置仪器面板标题的字体与标题栏的高度;TitleStyle:设置面板标题的字体、字形、大小等内容。图2.4面板外观属性的设置4)QuickEditWindow:快速编辑窗口部分。对于一个控件的使用,可以在属性窗口里进行相关参数设置,也可以在程序中通过有关函数设置控件的参数。LabWindows/CVI中的用户事件就是Windows操作系统的消息,LabWindows/CVI通过回调函数的方式处理用户事件,这种基于事件的编程方式简化了对应用程序流程的控制。每一个面板、控件和菜单对象都有其相应的响应事件,如双击鼠标、点击按钮等。在CVI中,每个事件对应一个回调函数,当事件发生时,对应的回调函数被激活,由回调函数来完成与控件对应的功能。面板事件。在CVI中添加面板回调函数,必须要设置的是该面板所响应的事件,当程序运行并响应面板事件时,则执行此面板相关事件的回调函数。选择菜单Code→Preference→PanelCallbackEvents,可以设置面板响应的事件。面板事件共11个,见图2.5。表2.2标题属性设置对话框中各设置项含义名称功能名称功能Font选择标题的字体Italic选择标题是否是斜体Size选择标超的大小Underline选择标思是否有下划线TextColor选择标題的顔色Strikeout选择标题是否有中划线Bold选择标题是否是黑体图2.5面板事件的类型(1)面板回调函数的原型为:intCVICALLBACKPanelCallback(intpanel,intevent,void*callbackdata,inteventdata1,inteventdata2)panel:表示发生事件的面板的句柄;event:表示所发生的事件;*callbackdata:是一个指针变量,在程序中调用函数时可以用来传递某些特殊的变量。eventdata1和eventdata2:在具体的应用中有其不同的含义,具体说明如下:①在鼠标事件中,eventdata1和eventdata2表示鼠标按下时,相对于响应面板或函数所在位置的X轴和Y轴坐标。②在键盘按键事件中,eventdata1表示键盘按键的键值和状态,eventdata2是指向实际键值的指针。③在获取焦点和失去焦点事件中,eventdata1分别表示前一个具有焦点或下一个获得焦点的控件的ID号,而entdata2无意义。在EVENT_TIMER_TICK事件中,eventdata1表示当前时间值的指针,eventdata2表示上次响应此消息到现在的时间间隔。2.2面板操作类函数面板是仪器的基本组成控件,一个仪器包含一个或多个面板,在面板上放置各种控件和菜单条,用于编辑用户界面。1)LoadPanel函数:将面板装载到内存中。函数原形如下:intpanelHandle=LoadPanel(intparentPanelHandle,charfilename[],intpanelResourceID);parentPanelHandle:父面板句柄,若为0,则装载的面板为父面板;filename:为装载面板的用户界面文件名;panelResourceID:是用户编辑器中为面板定义的常数值;panelHandle:为返回值,表示面板的句柄,在其它函数中使用该值来调用该面板。(见书上P53)2)NewPanel函数:创建新面板,为其它函数调用返回面板句柄值。函数原形如下:intpanelHandle=NewPanel(intparentPanelHandle,charpanelTitle[],intpanelTop,intpanelLeft,intpanelHeight,intpanelWidth);parentPanelHandle:父面板句柄,若为0,则装载的面板为父面板;panelTitle:为创建新面板的标题名;panelTop、panelLeft、panelHeight、panelWidth设置面板的位置和大小。3)DisplayPanel:显示面板。intStatus=DisplayPanel(intpanelHandle);panelHandle:为面板句柄,专指已经在内存中存在的面板;Status:为返回的状态值,用GETUILErrorString函数得到状态码对应的状态描述。(说明见附录B)4)DiscardPanel:删除面板。intStatus=DiscardPanel(intpanelHandle);5)HidedPanel:隐藏面板。intStatus=HidedPanel(intpanelHandle);6)GetPanelAttribute:获得面板属性。intStatus=GetPanelAttribute(intpanelHandle,intpanelAttribute,void*attributeValue);panelAttribute:输入参数,为面板属性值;attributeValue:输出参数,为输出的面板属性的当前值。说明:面板的具体属性可通过下列方式来查看和设置。在界面的左下角选择Libraries→UserInterfaceLibrary→Panelset→PanelAttribute。如图2.6所示。图2.6也可在帮助文件中进行函数查询。7)SetPanelAttribute:设置面板属性。intStatus=SetPanelAttribute(intpanelHandle,intpanelAttribute,...);2.3课堂练习二:面板函数设计与应用任务:利用用户编辑器创建两个面板,父面板(ParentPanel)和子面板(ChildPanel),并实现显示和隐藏面板的功能。步骤1:创建面板函数设计界面如图2.7所示:图2.7面板函数设计界面面板函数设计界面及控件的基本属性如表2.3所示:表2.3面板函数设计界面及控件的基本属性面板和控件类型名称标题回调函数PanelPARENTParentPanelPanelCHILDChildPanelCommandButtonSHOWShowChildPanelShowHidePanelsCommandButtonHIDEHideChildPanelShowHidePanelsCommandButtonQUITQuitShutdown步骤3:在用户界面编辑器中使用代码生成菜单(Code)中的生成全部代码(AllCode)项,让LabWindows/CVI自动生成源程序代码,包括主函数和各个控件的回调函数,并编写相应功能程序。程序源代码如下:#includecvirte.h#includeuserinth#includepanels.hstaticintparent;intchild;/*为子面板定义面板句柄变量*/intmain(intargc,char*argv[]){if(InitCVIRTE(0,argv,0)==0)return-1;if((parent=LoadPanel(0,panels.uir,PARENT))0)return-1;child=LoadPanel(parent,panels.uir,CHILD);/*加载子面板到内存,并将子面板的句柄赋值给child变量*/DisplayPanel(parent);RunUserlnterface();return0;}intCVICALLBACKShowHidePanels(intpanel,intcontrol,intevent,void*callbackData,inteventData1,inteventData2){switch(control){casePARENT_SHOW:DisplayPanel(child);break;casePARENT_HIDE:HidePanel(child);break;}return0;}intCVICALLBACKShutdown(intpanel,intcontrol,intevent,

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功