失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > MFC中开发ocx控件 html容器收不到ocx的事件Event

MFC中开发ocx控件 html容器收不到ocx的事件Event

时间:2023-07-16 22:04:13

相关推荐

MFC中开发ocx控件 html容器收不到ocx的事件Event

问题背景:

MFC开发ocx控件,主窗口就是ctrl类,主窗口类中调度接口和事件映射添加,执行OK,外部html容器中接收事件成功,如下:

ctrl.h中声明事件映射函数

void EVTPENSIGNMSG(SHORT code, LPCTSTR result)

{

FireEvent(eventidEVTPENSIGNMSG, EVENT_PARAM(VTS_I2 VTS_BSTR), code, result);

}

ctrl.cpp中调用事件映射函数

int nTmp = 1;

CString strTmp= "completeSign";

EVTPENSIGNMSG(nTmp,strTmp);

<!--html中接收控件事件-->

<script language=javascript for=amPenSigner event=EVTPENSIGNMSG(code,result)>

alert(code);

alert(result);

</script>

但是我再ctrl主窗口类中创建一个子线程,然后在子线程函数中调用事件映射函数,外部html容器就收不到事件了,怎么办?

这是因为ocx控件只能主窗口给外部容器发事件,所以在子线程中应该先将消息发到主窗口,然后主窗口去发事件。

问题解决:

但是子线程给主窗口发送消息,还有个坑,就是要使用PoseMessage()函数。

SendMessage()函数的话,就会显示一切正常,甚至事件映射函数执行成功,但是外部容器就是接受不到事件,这是因为SendMessage()是同步函数,所以此时还是相当于子线程给外部抛事件,那肯定就成功不了。

如果觉得《MFC中开发ocx控件 html容器收不到ocx的事件Event》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。