描述:
MFC中,在自己写的CHtmlView中添加了一个接口,
SetHandler(VARIANT vt);
通过页面中Javascript调用这个接口:
function Test()
{
alert("调用成功!");
}
window.external.SetHandler(Test);
跟踪进入SetHandler()后,发现JavaScript传入的是一个IDispatch接口,我现在想通过这个接口调用传入的函数对象,该怎么办?我怎么知道传入的函数的dispid是什么,更不知道传入函数的名称是什么。 IE是怎么处理类似问题的?
盼高人释疑!
解决方案1:
<object name='tt' id='tt' classid="clsid:9A819C7E-E4C8-41C1-B5D2-473B62BB9929"></object>
<SCRIPT LANGUAGE="JavaScript">
function jsTestFunc( a , b )
{
alert( a );
alert( b );
alert( a + b );
}
tt.TestFunc( jsTestFunc );
</SCRIPT>
</BODY>
</HTML>
STDMETHODIMP CCSDNTest::TestFunc(VARIANT *var)
{
CComPtr< IDispatch > objTest = _variant_t( var );
CComVariant varR;
CComVariant parm[2];
parm[0] = 1;
parm[1] = 2;
DISPPARAMS disp = { parm, NULL, 2, 0 };
objTest->Invoke( 0 , IID_NULL , LOCALE_SYSTEM_DEFAULT , DISPATCH_METHOD ,
&disp , &varR , NULL , NULL );
return S_OK;
}