mfc-ocx控件的fire自定义事件无法传递给ie的解决方法

本文探讨了在项目中使用OCX封装C++接口时遇到的问题,即异步事件在HTML+JS环境下只能接收最后一个。通过改用postmessage解决,实现所有事件的通知。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.项目中使用了ocx封装c++接口,除了属性和方法,还自定义了几个fire事件。但是奇怪的是,使用TSTCON32工具时,一切正常,但是使用html+js网页时,事件只能接收到最后一个。

2.介绍一下背景,我用ocx封装的对外接口,我本身的sdk是异步接口,也就是每个接口调用完了,有一个异步的导出类,把结果返回来,我用回调函数将这些数据通过ocx的fire自定义事件传到外部去。

3.奇怪的是,我所有的异步事件中,只有一个最后的退出通知接口可以被网页接收到。因为大家都说因为js不支持多线程,所以会导致主线程外触发的fire无法被外部js获取到。我最后一个能获取到,可能退出的线程和其他的不一样。

4.解决思路:使用自定义postmessage消息代替回调,解决问题,外部可以接收到所有的事件通知。

5.postmessage的实现:

5.1主头文件声明自定义消息,ctrl类中声明类句柄

5.2ctrl类中添加自定义消息映射

5.3自定义函数中调用fire事件

5.4调用自定义消息

此时网页中可以正常接收到fire事件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

luiio

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值