LabWindows/CVI虚拟仪器设计技术基本控件使用之:Ring 箭头设置
1.3 Ring 箭头设置
1.3.1 Ring 箭头设计方法
在进行图形用户界面设计时,设计者通常会对控件外观(如大小、形状、形式)等进行调整,但LabWindows/CVI 中的控件外观很少能进行二次开发与设计,但是,Ring 控件的箭头大小却在可以设置之列。NI 公司的Luis Gomes 在网站上公布了有关Ring 控件箭头设置的非公开资料,但在其官方手册中并没有说明。Ring 控件箭头属性设置主要包括宽度和高度,可使控件箭头与显示的文字字体比例保持协调。对于普通Ring 控件,可用SetCtrlAttribute 函数,控件属性设置为20472,对于Menu Ring 、Recessed Menu Ring 和Popup Menu Ring 控件,可设置控件属性值为20475 来调整宽度值,通过设置控件属性值为20476 来调整高度值。双击Ring 控件,在弹出的Edit Ring 对话框中点击Label/Value Pairs… 按钮,设置标题和数值对,如图1-6 所示。
由于LabWindows/CVI 具有非常灵活的回调机制,在编写控件回调函数时,可以借鉴控件事件响应机制(即event 事件机制)的集中处理方法(如各种鼠标、键盘事件处理),对所有的Ring 控件使用相同的回调函数名称,通过回调函数中的control 参数,利用控件常量名来区分不同控件的事件响应。采用这种方式可使代码量显著减少,提高编程效率。
Ring 控件可提供多组选择项目,每一组选项都存储有标题和数值对,二者一一对应,标题为文本字符,提供显示功能,数值为标题提供后台索引,能通过索引获得标题或通过选择标题而获得索引。在选中Ring 控件后,可以通过空格键来弹出控件中的所有选项,利用键盘的上下键来选择其中的选项,按下回车键确认选项,按下ESC 键则关闭所弹出的选项。
1.3.2 Ring 箭头程序设计
(1)面板设计
编写一个Ring 箭头设置测试程序,首先通过Binary Switch 控件设置Ring 控件箭头的宽度或高度,然后设置Menu Ring 、Recessed Menu Ring 和Popup Menu Ring 的宽度或高度值,对于普通Ring 控件,只能设置宽度,高度设置不起作用,设置的数值区间为0~20 。面板设计如图1-7 所示,面板中主要控件属性设置如表1-10 所示。
图1-6 Label/Value Pairs 对话框图
1-7 Ring 箭头设置面板
表1-10 控件属性设置表
常量名 | 控件类型 | 控件的主要属性 |
PANEL | Panel | 标题:Ring 箭头设置回调函数:PanelCB |
RING_PLAIN | Ring | 标题:Ring 回调函数:arrow |
RING_MENU | Ring | 标题:Menu Ring 回调函数:arrow |
RING_RECESSEDMENU | Ring | 标题:Recessed Menu Ring 回调函数:arrow |
RING_POPUPMENU | Ring | 标题:Popup Menu Ring 回调函数:arrow |
BINARYSWITCH | Binary Switch | 标题:箭头设置ON Text :高度OFF Text :宽度 |
(2)程序源代码
//头文件声明
#include <cvirte.h>
#include <userint.h>
#include "Ring 箭头设置.h"
static int panelHandle; //主函数
int main (int argc, char *argv[])
{
if (InitCVIRTE (0, argv, 0) == 0)
return –1; /* out of memory */ if ((panelHandle = LoadPanel (0, "Ring 箭头设置.uir", PANEL)) < 0)
return –1;
DisplayPanel (panelHandle);
RunUserInterface ();
DiscardPanel (panelHandle);
return 0;
} //面板回调函数
int CVICALLBACK PanelCB (int panel, int event, void *callbackData,
int eventData1, int eventData2)
{
switch (event)
{
case EVENT_CLOSE:
QuitUserInterface (0);
break;
}
return 0;
}
?//Ring 控件
int CVICALLBACK arrow (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{ //定义箭头的宽度或高度
int style; //定义箭头的数值
int value;
switch (event)
{
case EVENT_COMMIT:
// 判断设置箭头的宽度或高度
GetCtrlVal (panelHandle, PANEL_BINARYSWITCH, &style);
// 当设置箭头属性为宽度时
if (style == 0)
{ // 判断响应哪一控件事件
switch (contr
LabWindows 虚拟仪器 CVI 控件 Ring 箭头 相关文章:
- 用于雷达测试和验证的自动化测试设备(05-15)
- 基于LabWindows的录波分析仪的设计(03-01)
- LabWindows/CVI虚拟仪器设计技术基本控件使用之: Tab 控件(11-13)
- LabWindows/CVI虚拟仪器设计技术场景与游戏设计之:时钟制作(11-13)
- LabWindows/CVI虚拟仪器设计技术场景与游戏设计之: 下雪场景(11-13)
- LabWindows/CVI虚拟仪器设计技术基本控件使用之:回调函数(11-13)