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()是同步函數,因此此時仍是至關於子線程給外部拋事件,那確定就成功不了。

相關文章
相關標籤/搜索