OCX 与 JS 互调详解

论坛 期权论坛 期权     
Android小码家   2019-7-20 10:24   3809   0
@[TOC]首先我们观察一下项目的结构,方便后面操作
如上类视图以及其他视图都可以从下图中找到答案
注意这个类视图后面创建OCX 的Event事件要用到。
JS调用OCX到上图的类视图 点添加事件
输入参数名,点添加自动生成代码
创建调度映射,让外部JS能够识别并调用
来到Ctrl.h文件中添加枚举标志
这样我们再调试中就可以看到OCX的公开函数了
调试
  1. // 给JS调用int CMFCActiveXControl1Ctrl::beCallByJs(int param){    MessageBox(_T("给JS调用"));    return 10;}
复制代码
JS中
  1. function test3(param){   document.getElementById("jssTest1").beCallByJs(1);}
复制代码
OCX调用JS添加事件,跟上面一样打开类视图
这里是用VS2013添加的,VS2017点添加会提示必须加入Event的问题,比较奇葩。
idl中的事件申明
ctrl.h中实现
不过不要慌,这些都是自动生成的,当然看下也好,万一什么时候要自己动手呢。
调用
  1. CallJSBackEvent(_T("草泥马"));
复制代码
JS响应方式一:attachEvent
  1. window.onload =function(){    alert("加载完毕,加载ocx事件");    document.getElementById("jssTest1").attachEvent("CallJSBackEvent",test2);         }function test2(param)  {        alert("事件回传"+param)}
复制代码
方式二:script
  1.      //alert("回调函数发现:" + p);    test2(p);
复制代码
注意注意一、
使用Edge的话attachEvent是不生效的
注意二、attachEvent和Script方式同时使用是不会被覆盖的,均会被调用
其他一、关于IE不能调试的问题,直接下载一个插件即可参考:https://www.cnblogs.com/cxying93/p/6586694.html
二、codebase 无需注册直接安装ocx
效果
三、卸载
regsvr32 /u 文件路径

源代码关注公众号回复互调OCX获取
还有更多干货分享.

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:5
帖子:1
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP