牛人救助!ActiveX在IE11下面的诡异问题
tttk 2014-12-24 10:24:21 我用vc++写的一个ActiveX,有一个属性定义为IDispatch*接口,定义如下:
[propget, id(7), helpstring("property onStatus")]
HRESULT OnStatus([out, retval] IDispatch* *pVal);
[propput, id(7), helpstring("property onStatus")]
HRESULT OnStatus([in] IDispatch* newVal);
在IE中调用如下:
function onStatus() {...}
wordctl = new ActiveXObject("WebHelperX.Doc2HtmlCtl");
wordctl.OnStatus = onStatus;
wordctl.OnStatus(); // 问题行
IE6-IE8,运行正常。
但是测试IE11时,问题行就崩溃。
STDMETHODIMP CDoc2HtmlCtl::get_OnStatus(IDispatch **pVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
*pVal = m_pWndHidden->m_pOnStatus;
return S_OK;
}
STDMETHODIMP CDoc2HtmlCtl::put_OnStatus(IDispatch *newVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
CreateHiddenWindow();
m_pWndHidden->m_pOnStatus = newVal;
return S_OK;
}
接口定义非常简单,就是把IDispatch指针保存在本地
在IE11中,不知道为什么这个IDispatch指针就莫名其妙的丢失。而且是刚刚附完值的情况。
百思不得其解,烦请高手救助