请教一个关于COleSafeArray得问题
有这样一段代码:
COleSafeArray arryParam,arryResp,arryBuf;
LPVOID lpBuf;
WORD wNum;
if(-1 == m_nCurCam)
return;
CWaitCursor cur;
arryParam.CreateOneDim(VT_UI1, sizeof(CMD_PARAM_VALUE));
//注:CMD_PARAM_VALUE 是个结构类型
arryResp.CreateOneDim(VT_UI1, sizeof(CMD_RESP_VALUE));
//注:CMD_RESP_VALUE是个结构类型
arryBuf.CreateOneDim(VT_UI1, sizeof(WORD));
CString strNum;
m_cmbBurstNum.GetLBText(m_cmbBurstNum.GetCurSel(),strNum);
wNum = atoi((char*)(LPCTSTR)strNum);
arryBuf.AccessData(&lpBuf);
CopyMemory(lpBuf,&wNum,sizeof(WORD));
arryBuf.UnaccessData();
try
{
m_pMocha->SendCmd(m_nCurCam,OP_SET_BURST_NUMBER,arryParam,arryResp,arryBuf,sizeof(WORD));
}
其中最后一句得m_pMocha->SendCmd是以上面得形式来传递参数得。而且这个Motha是个COM,所以它也可以在VB中被调用。但是我在VB中以这样得形式调用后却非法操作了:
Dim arryParam As CMD_PARAM_VALUE
Dim arryResp As CMD_RESP_VALUE
Dim pBuf As Long
Mocha.SendCmd 0, OP_SET_STILL_CAPTURE_MODE, arryParam, arryResp, pBuf, Len(pBuf)
请问按照COleSafeArray这样得声明,我该怎么样在VB中进行调用呢?
注:它在VC中得tli文件中是这样声明得:
inline HRESULT IMocha::SendCmd ( long camNo, long opeCode, const _variant_t & pramValue, VARIANT * pRespValue, VARIANT * pBuf, long bufSize ) {
HRESULT _hr = raw_SendCmd(camNo, opeCode, pramValue, pRespValue, pBuf, bufSize);
if (FAILED(_hr)) _com_issue_errorex(_hr, this, __uuidof(this));
return _hr;
}