上一节实现了控件在页面中的加载及界面显示,这一节开始在上一节的基础上添加接口供WEB调用。
手动在CMainDlg.h中添加一方法:
public:
LONG SetParam(LPCTSTR lpParam);
在CMainDlg.cpp中为:
LONG CMainDlg::SetParam( LPCTSTR lpParam )
{
CString strParam(lpParam);
SetDlgItemText(IDC_EDIT_OUTPUT, _T("ActiveX处理后为:") + strParam);
return 1;
}
在类视图中,右键点击“DemoLib”下的“_DDemo”,在右键菜单中选择“添加”——>“添加方法”,然后按如图进行设置:
然后完成。此时向导会在Demo.idl、DemoCtrl.h、DemoCtrl.cpp中添加以下代码:
在 CDemoCtrl::SetCtrlParam 方法中添加如下图所示代码:
此时点击菜单栏中“生成”、“重新生成解决方案”,如果没有错误,控件将以最新的版本在系统中注册。
生成成功后,我们修改上次的1.htm文件,在其中添加JS以调用控件的接口,1.htm源码为:
<HTML>
<HEAD>
<TITLE>Test ActiveX</TITLE>
</HEAD>
<HEAD>
<TITLE>Test ActiveX</TITLE>
</HEAD>
<BODY>
<input type="button" value="接口测试" id="btnOK" οnclick="SetParam();"></input>
</BODY>
<input type="button" value="接口测试" id="btnOK" οnclick="SetParam();"></input>
</BODY>
<OBJECT ID="DemoCtrl" WIDTH=528 HEIGHT=45 classid="CLSID:2131BC48-5E19-4DF6-9534-A534329C365F">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="12806">
<PARAM NAME="_ExtentY" VALUE="1747">
<PARAM NAME="_StockProps" VALUE="0">
</OBJECT>
<script language="javascript">
function SetParam()
{
var sum = DemoCtrl.SetCtrlParam("Hello, ActiveX!");
alert(sum);
}
</script>
</HTML>
通过浏览器打开1.htm,提示ActiveX,安装后点击页面上按钮,就会看到效果,如图所示:
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="12806">
<PARAM NAME="_ExtentY" VALUE="1747">
<PARAM NAME="_StockProps" VALUE="0">
</OBJECT>
<script language="javascript">
function SetParam()
{
var sum = DemoCtrl.SetCtrlParam("Hello, ActiveX!");
alert(sum);
}
</script>
</HTML>
下节讲如何通过代码让控件初始化安全和脚本安全,防止安装时被系统阻止。