MFC Activex與JavaScript的介面互動

來源:互聯網
上載者:User
MFC Activex與JavaScript的介面互動

在Activex的應用中與網頁的JavaScript的互動必不可少,在這裡就簡單的介紹下。
VC 建立的Activex的有兩種類型,MFC Activex與ATL Activex, 在VC建立工程的時候選擇,這篇文章介紹的是針對MFC Activex的,ATL Activex可以繞過了。
測試環境:: VC++ 6.0 SP6

(一) MFC Activex與JavaScript的傳遞參數、傳回值

在JavaScript調用時Activex方法,可以歸分為兩種:
1參數為整型變數,返回為整型變數

long CActivexCtrl::Func(long i) 
{
return 0;
}

2 參數為字串變數,返回為字串變數

BSTR CActivexCtrl::Func(LPCTSTR str) 
{
CString strResult;
strResult = "TeastString2 ret";
return strResult.AllocSysString();
}

3 ….其它的調用方式參考上述兩種
4 在JavaScript中變數預設都可以是variant類型,這樣我們就可以利用VARIANT傳遞各種類型的參數,在Activex中,先對variant的變數進行類型轉換,再進行調用。當返回結果時,將結果封裝成variant類型的變數再返回。(variant與各種類型變數轉換,不是本文重點,在這裡不進行講解)

VARIANT CActivexCtrl::Func(const VARIANT FAR& para1) 
{
VARIANT vaResult;
VariantInit(&vaResult);

return vaResult;
}

 

(二) MFC Activex非同步呼叫JavaScript事件方法

1 在MFC Activex中註冊回呼函數:

//回呼函數測試
#include <ATLBASE.H>
extern CComModule _Module;
#include <ATLCOM.h>

//回呼函數--全域變數
CComDispatchDriver m_Func1;

//註冊回呼函數
void CActivexCtrl::regfun(LPDISPATCH bstrFun)
{
m_Func1 = bstrFun;
}
//觸發回呼函數
void CActivexCtrl::func_calljs()
{
VARIANT varArg[1];
varArg[0].vt = VT_UINT;
varArg[0].uintVal = 10;
m_Func1.InvokeN((DISPID)DISPID_VALUE, varArg, 1);
}

 

2 JavaScript的中註冊非同步過程:

//非同步回呼函數過程
function callfun(i)
{
alert("callback function in js, ret=" + i);
}
//註冊回呼函數
obj.regfun(callfun);

 

from:http://www.cnblogs.com/sding/archive/2012/04/03/2431142.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.