原文转自 https://blog.csdn.net/qianbin3200896/article/details/81452822

1、ActiveX控件部分(JS到ActiveX控件)
继续上一篇博客中新建的项目,找到DActiveXDemo,右键添加——属性

基于MFC的网页ActiveX控件开发全程实录2(js向ActiveX控件传递参数)-LMLPHP

添加第一个参数,用来传递字符串,具体如下

基于MFC的网页ActiveX控件开发全程实录2(js向ActiveX控件传递参数)-LMLPHP

可以看到在ActiveXDemoCtrl.h文件中创建了一个变量和一个属性修改事件

基于MFC的网页ActiveX控件开发全程实录2(js向ActiveX控件传递参数)-LMLPHP

待会我们我在OnParStrChanged事件中编写参数传递的代码,这里我们先给之前创建的CActiveXDlg对话框添加一个文本框用来显示js传来的参数

基于MFC的网页ActiveX控件开发全程实录2(js向ActiveX控件传递参数)-LMLPHP

然后给该文本框添加对应的成员变量

基于MFC的网页ActiveX控件开发全程实录2(js向ActiveX控件传递参数)-LMLPHP

接下来我们可以修改OnparStrChanged代码,具体如下

void CActiveXDemoCtrl::OnparStrChanged(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()); // TODO: 在此添加属性处理程序代码
m_MyDlg.m_parStr.Format("%s",m_parStr);
m_MyDlg.UpdateData(FALSE); SetModifiedFlag();
}

然后重新生成项目。

2、网页部分
接下来修改html代码如下:

<HTML>
<HEAD>
<TITLE>js传递参数给ActiveX控件</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<SCRIPT LANGUAGE="JavaScript">
function SendToActiveX()
{
if (InputStr.value!="")
{
Test_js.parStr= InputStr.value;
}
}
</SCRIPT>
</HEAD>
<BODY> 请输入你想传递的字符串: <INPUT TYPE="text" NAME="InputStr" VALUE="">
<p></p>
<INPUT TYPE="button" NAME="传参"
VALUE="测试js传参数: " ONCLICK=SendToActiveX()> <p></p> <OBJECT ID="Test_js" WIDTH=% HEIGHT=%
CLASSID="CLSID:B852A7D3-3356-400E-A2BF-A15F7D0F99CB">
<PARAM NAME="_Version" VALUE="">
<PARAM NAME="_ExtentX" VALUE="">
<PARAM NAME="_ExtentY" VALUE="">
<PARAM NAME="_StockProps" VALUE="">
</OBJECT> </BODY>
</HTML>

用IE浏览器运行html文件,输入对应的字符串然后点击按钮即可。效果如下

基于MFC的网页ActiveX控件开发全程实录2(js向ActiveX控件传递参数)-LMLPHP

3、代码下载

下面给出代码的链接(含源代码和html文件):https://download.csdn.net/download/qianbin3200896/10586112

05-04 01:34