本文主要是介绍WTL 调用 NI 的 ActiveX 控件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
开发环境:vs2008 sp1, WTL 8.1, cwui.ocx 8.6.11 Release (473)
一,介绍
Measurement Studio ActiveX 支持的控件列表:
http://www.ni.com/mstudio/activex_ui_gallery.htm二,安装
方法1)
安装 MeasurementStudio,但是从评估板激活后转为正式版后,ActiveX还是会有"evaluation copy"的水印。这时需要删除MeasurementStudio,重新安装。
方法2)
只安装ActiveX控件,"ActiveX 纯净包" 下载地址在:
ftp://ftp.ni.com/support/softlib/measurement_studio/Misc/NIActiveXUpdater.exe
只需要序列号,不需要激活之类的操作,方便安装。而且ocx的版本比MeasurementStudio 2012的稍微高些。
三,使用
在头文件 stdafx.h 中增加:
#import "C:\Windows\system32\cwui.ocx" rename_namespace("Ni") no_auto_exclude
no_auto_exclude 不能忽略,不然无法使用 ControlImage() 这类接口。
例1,利用 DCWGraph 控件画图
声明:
class CMainDlg : public CAxDialogImpl<CMainDlg>, public CUpdateUI<CMainDlg>,public CMessageFilter, public CIdleHandler
{
public:... ...Ni::_DCWGraphPtr m_graphPtr;CAxWindow m_graphWnd;
};
实例化:
LRESULT CMainDlg::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
{... ...m_graphWnd = GetDlgItem(IDC_CWGRAPH1);m_graphWnd.QueryControl(&m_graphPtr);m_graphPtr->ClearData();... ...
}
画2条正弦曲线(两条曲线形状一样,上下偏移5)
CComSafeArrayBound bound[2];// 2 维数组[0, 0]; [1, 0]bound[0].SetCount(2); // X-> 2bound[0].SetLowerBound(0);bound[1].SetCount(1); // Y-> 1bound[1].SetLowerBound(0);CComSafeArray<double> sa(bound, 2);long index[2], data;data = index[0] = index[1] = 0;for (int i=0; i< 100; i++){double value = 2*sin(3.1415 * data / 5) + 3;for (index[0]=0; index[0] < 2; index[0]++){sa.MultiDimSetAt(index, value + index[0]*5);}_variant_t variant;variant.vt = VT_ARRAY | VT_R8;variant.parray = sa.m_psa;m_graphPtr->PutYDataAppend(variant);data ++;}
参考:
http://www.cnblogs.com/kylindai/archive/2007/11/28/974797.html
这篇关于WTL 调用 NI 的 ActiveX 控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!