Measurement Studio做仪表很是方便,原来我用过VC6.0中适配的这个工具。由于6.0太老了跟vin7兼容性不好,准备切换到VS2008。
我想要做一个仪表,所以又想起了NI的这个工具。VS2008和MStudio2009是适配的,相信搜到我这篇博文的同学已经正确安装了。
一切就绪新建一个基于MS(MStudio2009Std)的单文档类型CFormView类的工程。
添加一个Graph的控件,为该控件添加一个control类型的成员变量m_graph1,编译,问题出现:
1>test3View.cpp
1>h:\vs2008\test3\test3\cwgraph1.h(530) : error C2143: 语法错误 : 缺少“;”(在“*”的前面)
1>h:\vs2008\test3\test3\cwgraph1.h(530) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>h:\vs2008\test3\test3\cwgraph1.h(531) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>h:\vs2008\test3\test3\cwgraph1.h(535) : warning C4183: “GetPlotAreaImage”: 缺少返回类型;假定为返回“int”的成员函数
1>h:\vs2008\test3\test3\cwgraph1.h(536) : error C2061: 语法错误 : 标识符“CWPictureDisp”
。。。。。。。。。。。。。。。
问题原因:
一句话,VS没有链接到图表框对应的类库,导致编译失败。
Measurement Studio 包含一个用户库来为Measurement Studio ActiveX控件提供接口。这些类以CNi为前缀命名。例如,图表控件的类是CNiGraph,坐标的类是CNiAxis. 除了具有完整的功能外,这些类比自动生成的代码具有一系列优点。这些优点包括函数重载、可从任何进程对控件进行访问、自动从COM数据类型进行转换,例如将BSTR
和SAFEARRAY
转换为MFC数据类型,或者转换为基于MFC的Measurement Studio数据类型,如 CString
和CNiReal64Vector
。
Visual Studio添加变量向导需要知道添加到工程中的变量的信息,以便向导确定在声明变量的时候使用哪些VC类.如果添加变量向导在C++工程中无法获取这些信息,将会生成代码,并会在工程文件中写入这些信息,
解决办法:
1、删除新产生的两个文件,删除#include "cwgraph1.h"
2、把变量的声明由现有类,修改为CNi开头的类
CCwgraph1 m_graph1; ---->>>>>
CNiGraph m_graph1;
查看NI所支持的类,根据不同控件切换不同的类,查看路径:
Program Files (x86)\National Instruments\measurmentstudio2009\MeasurementStudioVS2008\VCNET\Include
这个是多有控件类的头文件。
至此编译通过,可以正常使用控件里面的功能了。
参考文件:
http://digital.ni.com/public.nsf/allkb/52CE71BA5135BB13862574C80033E1F1