menu

秋梦无痕

一场秋雨无梦痕,春夜清风冻煞人。冬来冷水寒似铁,夏至京北蟑满城。

Avatar

javascript调用ActiveX函数的方法

Q:
页面上的javascript如何调用ActiveX中的函数?

A:
ActiveX需要公布方法给javascript调用。

在ClassWizard中Automation页,添加Method。

手动添加Method:
ODL文件中添加
//{{AFX_ODL_METHOD(CTestCtrl)
[id(3)] void ShowDialog();
//}}AFX_ODL_METHOD

CTestCtrl.h中添加:
//{{AFX_DISPATCH(CTestCtrl)
afx_msg void OnShowDialog();
//}}AFX_DISPATCH

//{{AFX_DISP_ID(CTestCtrl)
dispidShowDialog = 3L,
//}}AFX_DISP_ID

CTestCtrl.cpp中添加:
//{{AFX_DISPATCH_MAP(CTestCtrl)
DISP_FUNCTION(CTestCtrl, "ShowDialog", OnShowDialog, VT_EMPTY, VTS_NONE)
//}}AFX_DISPATCH_MAP

然后实现OnShowDialog:
void CTestCtrl::OnShowDialog() {
// ... blahblah
}

最后,在javascript中调用:
<script type="text/javascript">
function ShowDialog(){
if(window.ActiveXObject){
try{
document.getElementById("objTest").ShowDialog();
}catch(e){}
}
}
</script>
<OBJECT WIDTH="300" HEIGHT="300" CLASSID="clsid:12342234-3234-4234-5234-623472348234" ID="objTest"></OBJECT>

评论已关闭