描述:
HRESULT Fire_OnBuffer( LONG nIndex, VARIANT pByte)
{
HRESULT hr = S_OK;
T * pThis = static_cast<T *>(this);
int cConnections = m_vec.GetSize();
for (int iConnection = 0; iConnection < cConnections; iConnection++)
{
pThis->Lock();
CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection);
pThis->Unlock();
IDispatch * pConnection = static_cast<IDispatch *>(punkConnection.p);
if (pConnection)
{
CComVariant varResult;
DISPPARAMS params;
params.rgvarg = new VARIANT[2];
params.cArgs=2;
params.cNamedArgs=0;
params.rgdispidNamedArgs=NULL;
params.rgvarg[0].parray = pByte.parray;
params.rgvarg[0].vt = pByte.vt;
params.rgvarg[1].lVal = nIndex;
params.rgvarg[1].vt = VT_I4;
//DISPPARAMS params = { avarParams, NULL, 2, 0 };
hr = pConnection->Invoke(4, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, ¶ms, &varResult, NULL, NULL);
}
}
return hr;
}
解决方案1:
[id(4), helpstring("方法OnBuffer")] HRESULT OnBuffer([in] LONG nIndex, [in] VARIANT pByte);
解决方案2:给出Event的IDL文件的定义,才好知道