如何从ActiveX控件中传出来一个一维数组指针

来源:百度知道 编辑:UC知道 时间:2024/05/17 23:39:17
利用Visual Studio 2008开发了一个基于MFC的ActiveX控件,在这个控件里,产生了一个BYTE型的一维数组指针,即BYTE *buffer,指向一个一维数组,数组很大,有两万多元素;我现在要把这个一维数组从控件中传出来。
我是利用控件的事件做的:在这个数组产生后,触发控件事件,在事件的参数中把buffer传出去,格式FireXXXEvent(BYTE *buffer),问题是我在容器中只能接收到的buffer是一个unsigned char型的一个数(即BYTE),而不是指针了。为什么不是指针了呢?

有没有别的方法可以解决这个一维数组指针从控件中传出来?我需要保存这个一维数组

COM之类的东西,你可以传BSTR*作为一个方法的参数,只是外面用的时候把这个BSTR转化成普通char*就行了,当然你不能直接写(char *)来强制转,呵呵 。。。

STDMETHODIMP CEnKB::getPosStatus(BSTR* pVal)
{
// TODO: 在此添加实现代码
CComBSTR re;

qfByteString qfPosStatus;
string szPosStatus;

szPosStatus = m_EnKB.getPosStatus();
qfPosStatus.SetByteValue((unsigned int)szPosStatus.size(), szPosStatus.data());

re.Append(xhTools::qfByteStringToCComBSTR(qfPosStatus));

*pVal = re.Copy();

return S_OK;
}

这样外面收到的就是BSTR,一个带有长度的宽字节的串,用一下WideCharToMultiByte()这样的API转换成char *。
===========================================
另外,如果数据量很大,建议用临时文件等方式来做。