我想获得一个正确的IDispatch指针,然后将其转换为CMyDispatch指针,稍后再使用它。
即在javascript中我想做这样的事情:
var x = external.obj.x;
var y = external.obj.y;
external.obj.x = y;
其中x和y是CMyDispatch的实例。
CMyDispatch以这种方式返回给 javascript:
STDMETHODIMP CMyDispatch::Invoke(DISPID dispIdMember, REFIID, LCID, WORD wFlags,
DISPPARAMS* pDispParams, VARIANT* pVarResult,
EXCEPINFO*, UINT*) {
if( pVarResult )
{
CMyDispatch* pDisp = new CMyDispatch();
CComVariant val( pDisp );
val.Detach( pVarResult );
}
return S_OK;
}
在带有DISPATCH_PROPERTYPUT标志的CMyDispatch.Invoke()中,我想获取包含y值的CMyDispatch实例。
使用以下代码时,pDispatch设置为一些垃圾:
STDMETHODIMP CMyDispatch::Invoke(DISPID dispIdMember, REFIID, LCID, WORD wFlags,
DISPPARAMS* pDispParams, VARIANT* pVarResult,
EXCEPINFO*, UINT*) {
ASSERT( pDispParams->cArgs == 1 );
ASSERT( VT_DISPATCH == pDispParams->rgvarg[0].vt );
IDispatch* pDisp = ( pDispParams->rgvarg[0].pdispVal ); // <-- garbage
CMyDispatch* pDispatch = (CMyDispatch*) pDisp; // <-- garbage
return S_OK;
}
我应该怎么做才能获得正确的CMyDispatch指针?谢谢你。