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

问题背景:javascript

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

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

void EVTPENSIGNMSG(SHORT code, LPCTSTR result)
{
FireEvent(eventidEVTPENSIGNMSG, EVENT_PARAM(VTS_I2 VTS_BSTR), code, result);
}函数

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

int nTmp = 1;
CString strTmp= "completeSign";
EVTPENSIGNMSG(nTmp,strTmp);线程

<!--html中接收控件事件-->
<script language=javascript for=amPenSigner event=EVTPENSIGNMSG(code,result)>
alert(code);
alert(result);
</script>code

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

这是由于ocx控件只能主窗口给外部容器发事件,因此在子线程中应该先将消息发到主窗口,而后主窗口去发事件。接口

问题解决:事件

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

SendMessage()函数的话,就会显示一切正常,甚至事件映射函数执行成功,可是外部容器就是接受不到事件,这是由于SendMessage()是同步函数,因此此时仍是至关于子线程给外部抛事件,那确定就成功不了。

相关文章
相关标签/搜索