如何在CHtmlView中实现与HTML页面使用window.external对像进行交互。
1、在类定义时添加
DECLARE_DISPATCH_MAP()
如:
class CItemView :
public CHtmlView
{
DECLARE_DISPATCH_MAP()
.
}
{
DECLARE_DISPATCH_MAP()
.
}
2、在构造函数中添加
EnableAutomation();
如:
CItemView::CItemView()
{
EnableAutomation();
}
{
EnableAutomation();
}
3、在类实现文件前添加类似如下的映射
BEGIN_DISPATCH_MAP(CItemView, CHtmlView)
DISP_FUNCTION(CItemView, "函数名", 函数名, VT_BOOL, VTS_I4 VTS_I4)
END_DISPATCH_MAP()
DISP_FUNCTION(CItemView, "函数名", 函数名, VT_BOOL, VTS_I4 VTS_I4)
END_DISPATCH_MAP()
即 BOOL CItemView::函数名(int, int)
4、重写OnGetExternal
HRESULT CItemView::OnGetExternal( LPDISPATCH *lppDispatch)
{
*lppDispatch = GetIDispatch(TRUE);
return S_OK;
}
{
*lppDispatch = GetIDispatch(TRUE);
return S_OK;
}
==================================
在页面的JS脚本中可以这调用
window.external.函数名(1,1);