Labview控件的MFC界面编程
Labview控件注册后可在MFC中被使用,通过调用控件类的成员函数(接口函数)可实现对相应控件的操作。而且其属性项有更多的设置项,通过改变设置选择可以方便地改变控件相应的属性,这样可以减少编程工作,这就类似于matlab的gui界面编程的控件使用。另外,Labview控件更加美观圆滑,是MFC界面编程的较佳选择。下面将介绍常用控件的相应操作的代码编写。
一.编辑框
(1) 读当前编辑框的值: 关联CCWNumEdit类型变量m_Num; 程序代码:
COleVariant num;// COleVariant 类型变量
num = m_Num.GetValue();//返回Variant 类型变量
num.ChangeType(VT_R4, NULL); //将num的类型改为float(VT_R4)型 float num_Get;
num_Get = num.fltVal;//取出Variant 类型变量的值(float型),即取得当前的编辑框值
(2)当为只读编辑框时,将其属性改为Indicator即可,然后设置其当前显示的值: 关联CCWNumEdit类型变量m_Num; 程序代码:
m_Num.SetValue(COleVariant(***));//***表示float或double型数据
(3)实例:完成两个数据的相加并显示在只读编辑框上:
按钮相应函数的代码编写:
COleVariant num1, num2; float num3;
num1 = m_Num1.GetValue(); num2 = m_Num2.GetValue(); num1.ChangeType(VT_R4, NULL); num2.ChangeType(VT_R4, NULL);
num3 = num1.fltVal + num2.fltVal; m_Num3.SetValue(COleVariant(num3)); 二.Button
(1) 拨式按钮
设置其位置(上或下,左或右): 关联CCWButton变量m_Button;
m_Button.SetValue(0);//拨到上面位置(左) m_Button.SetValue(1);//拨到下面位置(右)
(2) 指示灯按钮
设置其状态(亮或暗):
关联CCWButton变量m_Button; m_Button.SetValue(0);//设置为暗 m_Button.SetValue(1);//设置为亮
三.Slider
通过属性页设置slider的Max,Min和Inc/Dec值等; 关联CCWSlider变量m_Slider; 设置其显示的值:
m_Slider.SetValue(COleVariant(10.0));//设置初始值为10 例子:只读编辑框显示slider的当前值
编写slider控件的响应函数:
OnPointerValueChangedCwslide1(long Pointer, VARIANT FAR* Value)
{
m_Num.SetValue(* Value); }
四.Knob(旋钮)
通过属性页设置Knob的Max,Min等; 关联CCWKnob变量m_Knob; 设置其显示的值:
m_Knob.SetValue(COleVariant(10.0)); 例子:只读编辑框显示knob的当前值
编写knob控件的响应函数:
OnPointerValueChangedCwknob1(long Pointer, VARIANT FAR* Value) {
m_Num.SetValue(* Value); }
五.Graph
(1) 清屏
添加CCWGraph变量m_Graph;
m_Graph.ClearData();
(2) 画单线
每个循环进行画单个点的操作:
m_Graph.SetYDataAppend(COleVariant(***));//***为该次的描点数值
(3) 画多条曲线
(如画两条曲线,则需要创建一个2*1的数组) 添加成员变量或全局变量:
COleSafeArray disArray;//COleVariant数组结构 long index[2];
在初始化函数中进行初始化:
DWORD numElement[] = {2,1};//保存数组的行数和列数
disArray.Create(VT_R4, 2, numElement);//创建2*1的float型二维数组 index[1] = 0;//记录索引值
然后在循环体中操作:
float val;
for (index[0]=0; index[0]<2; index[0]++) {
val = ***;
disArray.PutElement(index, &val);//放置元素:0 – 数组第一个元素,1 --数组第//二个元素 } m_Graph.SetYDataAppend(disArray);