欢迎光临散文网 会员登陆 & 注册

[LabWindows_CVI测试技术及工程应用]3.7滚动条及仪器驱动使用(学习杂记)

2020-02-23 20:44 作者:技术龙的传人  | 我要投稿

Scroll Bar 滚动条

仪器驱动装载

Instrument——〉Load(路径为\National Instruments\CVI2017\toolslib\custctrl\scroll.fp)

滚动条控件(水平 垂直)

滚动条控件函数
滚动条属性设置表

滚动条编程

滚动条配置面板


控件属性设置表

    具体细节参考https://www.bilibili.com/read/cv4728312操作,这里不再啰嗦,再自己摸索graph属性的配置,相信你一定能行!!

产生并修改源码

#include "scroll.h"

#include <cvirte.h>

#include <userint.h>

#include "scrollbar.h"


static int panelHandle;


void getvalue(void);


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

{

int value;

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

return -1; /* out of memory */

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

return -1;

//将绘图控件转化成滚动条

ScrollBar_ConvertFromGraph(panelHandle, PANEL_GRAPH_VERTICAL,

  scrollbarCB, &panelHandle);

ScrollBar_GetAttribute(panelHandle, PANEL_GRAPH_VERTICAL, ATTR_SB_VALUE, &value);//获取滚动条当前位置

SetCtrlVal(panelHandle, PANEL_NUMERIC_VERTICAL_VAL, value);//在NUMERIC_VERTIVAL_VAL中显示滚动条的位置

GetCtrlVal(panelHandle, PANEL_NUMERIC_VERTICAL_MIN, &value);//获取滚动条最小值

ScrollBar_SetAttribute(panelHandle, PANEL_GRAPH_VERTICAL,ATTR_SB_DOC_MIN, value);

GetCtrlVal(panelHandle, PANEL_NUMERIC_VERTICAL_MAX, &value);//获取滚动条最大值

ScrollBar_SetAttribute(panelHandle, PANEL_GRAPH_VERTICAL,ATTR_SB_DOC_MAX, value);

GetCtrlVal(panelHandle, PANEL_NUMERIC_VERTICAL_HEIG, &value);//获取滚动条高度

ScrollBar_SetAttribute(panelHandle, PANEL_GRAPH_VERTICAL,ATTR_SB_HEIGHT, value);

GetCtrlVal(panelHandle, PANEL_NUMERIC_VERTICAL_WID, &value);//获取滚动条宽度

ScrollBar_SetAttribute(panelHandle, PANEL_GRAPH_VERTICAL,ATTR_SB_WIDTH, value);

GetCtrlVal(panelHandle, PANEL_COLORNUM_COLOR, &value);//获取滚动条颜色

ScrollBar_SetAttribute(panelHandle, PANEL_GRAPH_VERTICAL,ATTR_SB_COLOR, value);

GetCtrlVal(panelHandle, PANEL_TOGGLEBUTTON_MODE, &value);//获取滚动条显示方式

ScrollBar_SetAttribute(panelHandle, PANEL_GRAPH_VERTICAL,ATTR_SB_VERTICAL, value);

GetCtrlVal(panelHandle, PANEL_NUMERIC_VERTICAL_VIEW, &value);//获取滚动条每次滚动大小

ScrollBar_SetAttribute(panelHandle, PANEL_GRAPH_VERTICAL,ATTR_SB_VIEW_SIZE, value);

DisplayPanel (panelHandle);

RunUserInterface ();

DiscardPanel (panelHandle);

return 0;

}

//滚动条回调函数

int CVICALLBACK scrollbarCB (int panel, int control, int event,

void *callbackData, int eventData1, int eventData2)

{

switch (event)

{

case EVENT_SB_UP_BUTTON:

getvalue();

break;

case EVENT_SB_DOWN_BUTTON:

getvalue();

break;

case EVENT_SB_PAGE_UP:

getvalue();

break;

case EVENT_SB_PAGE_DOWN:

getvalue();

break;

case EVENT_SB_THUMB_CHANGE:

getvalue();

break;

case EVENT_SB_COMMIT:

getvalue();

break;

}

return 0;

}

//所有Numeric控件的回调函数

int CVICALLBACK adjustvalue (int panel, int control, int event,

void *callbackData, int eventData1, int eventData2)

{

int value;

switch (event)

{

case EVENT_COMMIT:

GetCtrlVal(panelHandle, control, &value);//获取控件值

switch(control) //根据控件名设置滚动条相应属性

{

case PANEL_NUMERIC_VERTICAL_MIN: //滚动条最小值

ScrollBar_SetAttribute(panelHandle, PANEL_GRAPH_VERTICAL,

  ATTR_SB_DOC_MIN, value);

break;

case PANEL_NUMERIC_VERTICAL_VAL: //滚动条当前位置值

ScrollBar_SetAttribute(panelHandle, PANEL_GRAPH_VERTICAL,

  ATTR_SB_VALUE, value);

break;

case PANEL_NUMERIC_VERTICAL_MAX: //滚动条最大值

ScrollBar_SetAttribute(panelHandle, PANEL_GRAPH_VERTICAL,

  ATTR_SB_DOC_MAX, value);

break;

case PANEL_NUMERIC_VERTICAL_HEIG: //滚动条高度

ScrollBar_SetAttribute(panelHandle, PANEL_GRAPH_VERTICAL,

  ATTR_SB_HEIGHT, value);

break;

case PANEL_NUMERIC_VERTICAL_WID: //滚动条宽度

ScrollBar_SetAttribute(panelHandle, PANEL_GRAPH_VERTICAL,

  ATTR_SB_WIDTH, value);

break;

case PANEL_COLORNUM_COLOR: //滚动条颜色

ScrollBar_SetAttribute(panelHandle, PANEL_GRAPH_VERTICAL,

  ATTR_SB_COLOR, value);

break;

case PANEL_TOGGLEBUTTON_MODE: //滚动条显示方式(垂直 水平)

ScrollBar_SetAttribute(panelHandle, PANEL_GRAPH_VERTICAL,

  ATTR_SB_VERTICAL, value);

break;

case PANEL_NUMERIC_VERTICAL_VIEW: //滚动条一次滚动的大小

ScrollBar_SetAttribute(panelHandle, PANEL_GRAPH_VERTICAL,

  ATTR_SB_VIEW_SIZE, value);

break;

}

break;

}

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;

}


void getvalue(void)

{

int value;

ScrollBar_GetAttribute(panelHandle, PANEL_GRAPH_VERTICAL, ATTR_SB_VALUE, &value);//获取滚动条当前位置

SetCtrlVal(panelHandle, PANEL_NUMERIC_VERTICAL_VAL, value);//在NUMERIC_VERTIVAL_VAL中显示滚动条的位置

}


[LabWindows_CVI测试技术及工程应用]3.7滚动条及仪器驱动使用(学习杂记)的评论 (共 条)

分享到微博请遵守国家法律