天天看點

2011-04-13 15:54 利用事件觸發實作ActiveX調用js函數

1.  如果使用的是VS2010,則在Class View視窗中右擊_ICalcEvents接口,依次選擇“Add”、“Add Method…”,根據添加方法向導添加AddCompleted方法,如下圖所示:

2011-04-13 15:54 利用事件觸發實作ActiveX調用js函數

若采用的VS2008,則沒有自動的事件方法,需要手工注冊,找到項目的.idl檔案,在其中的library CalculatorLib中添加如下代碼:

dispinterface_ICalcEvents

        {

                properties:

                methods:

                    [id(1)]voidAddCompleted([in]DOUBLE * bstrCmdInfo);

        };

完成手工注冊。

2.  然後在Class View視窗中右擊CCalc類,依次選擇“Add”、“Add Connection Point…”,在彈出的實作連接配接點視窗中實作_ICalcEvents接口。

2011-04-13 15:54 利用事件觸發實作ActiveX調用js函數

3.  完成向導後,VS會自動為我們生成基本架構,包括引發事件的方法Fire_AddCompleted。我們隻需在Add方法中添加_ICalcEvents_CP.h(生成的Fire_AddCompleted方法所在檔案)頭檔案,運算并在運算結束時調用Fire_AddCompleted的代碼:

STDMETHODIMP CCalc::Add(DOUBLE a, DOUBLE b,DOUBLE * result) 

{ double result; 

*result = a + b; 

 Fire_AddCompleted(result); 

return S_OK; 

}

4.在網頁中添加代碼進行測試(添加的javascript代碼如下),應該能夠得到我們想要的效果。

<script type="text/javascript">    

function add() {        

var calc = document.getElementById('Calc');   

    calc.attachEvent("AddCompleted", OnAddCompleted);        

    calc.Add(3, 4);    

}     

function OnAddCompleted(result) {      

  alert(result);    

</script>

繼續閱讀