OCX控制項開發及WEB Javascript如何使用OCX控制項__Java

來源:互聯網
上載者:User

一、OCX控制項開發

1、使用IDE版本: VS2010

2、.基於MFC技術 開發OCX控制項。

3、.基本OCX開發過程

3.1、開啟VS 2010 建立項目,選擇MFC模板,“MFC   ActiveX控制項” “ Visual C++ 項目”,輸入名字後,一路預設就可以了。

3.2、下面對怎樣加入ocx事件與方法說明一下,選擇“類似圖” ,如圖紅框所示:


選擇某個紅框的內容右擊,選擇添加方法。 這時出現旁邊這個對話,提示輸入方法名稱。

註:第一個紅框是方法   作用:是外面可以調用的方法。

     第二個紅框是事件   作用:OCX控制項將資訊發送到外面。

4.ocx控制項引入對話方塊

4.1 在資源檢視上 添加一個對話方塊的資源或者直接選擇”插入Dialog“項。 然後在對話方塊上右擊選擇”添加類“項,輸入你要的類名。

4.2、然後選擇屬性,將visible值 設定成true、將Border 值設定成 None、將Style 值設定成 Child、將System Modal 值設定成True。

4.3、然後再選擇類別檢視,在有個類名”Ctrl“字樣的類上右擊選擇添加變數,該變數的類型是剛剛加入的類。

4.4、還是在類似圖介面,選擇同上的類,右擊開啟類嚮導,選擇訊息視窗,添加WM_CREAT訊息事件,如圖所示:


添加好後,在該函數中加入如下代碼:

m_dlgTest.Create(IDD_DIALOG1,this);
將該變數m_dlgTest換成 你剛剛命名的對話方塊類變數,就可以。

4.5、修改4.4中”Ctrl“檔案中OnDraw函數,將原來畫橢圓的代碼刪除,加上如下代碼:

//pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));//pdc->Ellipse(rcBounds);m_dlgTest.MoveWindow(rcBounds, TRUE);CBrush brBackGnd(TranslateColor(AmbientBackColor()));pdc->FillRect(rcBounds, &brBackGnd);

上面注釋的 是要刪除的。添加註釋下面的代碼。同上處理,將變數更換你的類變數。

5、ocx中再引入OCX控制項。

5.1 、在你要加入OCX控制項的資源上右擊 選擇”插入 ActiveX 控制項“項,然後選擇你所要加入的OCX控制項。

5.2、如果不讓這個ocx顯示,請選擇屬性將visible值 設定成false。預設是true。

5.3、在資源的ocx控制項上右擊選擇添加變數,輸入變數名。

5.4、然後在解決方案資源管理介面上選擇有”APP“字樣類的檔案,在其InitInstance()函數中的if(bInit)處理裡加入如下代碼:

if (bInit){// TODO: 在此添加您自己的模組初始化代碼。AfxEnableControlContainer();SetDialogBkColor(RGB(255,255,255));}

二、Web Javascript使用OCX控制項

1、首先建立一個html檔案,中間要<object></object>標籤。如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>OCX測試</title></head><body><object ID="myocx" classid="clsid:AA77E166-CE88-4C96-959D-609EF141539A" WIDTH=200 HEIGHT=200></object>
</body></html>

註:<object>標籤中 classid的來源是ocx。 可以在源ocx工程中有個副檔名叫”.idl“文中找到這個classID,(一般是最後一個)

2、Javascript使用ocx的方法。var myocxTest = document.getElementById("myocx");  myocxTest 就可以使用OCX控制項的方法了。

3、Javascript使用OCX事件,即OCX返回資訊到網頁上。方法:

<script event="ocx控制項的事件" for="myocx">    你處理資訊的代碼</script>

4、在第3條基礎上,即ocx返回資訊到介面上,在這個處理中還需使用該ocx的方法。如果在上述3的代碼中直接加上ocx的事件,會將瀏覽器卡死,無法正常使用。但是如果將ocx的事件用定時器延時一段時間後就可以正常。原因:可能是因為ocx將資訊返出來後還來不及銷毀,網頁又開始使用ocx的方法。所以使網頁線程堵塞造成卡死現象。【這是我看到現象後總結的,不一定是真理,如果有博友知道其原理請告知,分享你的技術,服務萬千前端開發人員】

<script event="ocx控制項的事件" for="myocx">  <pre name="code" class="javascript"><span style="white-space:pre"></span>setTimeout(function(){
<span style="white-space:pre"></span>myocx.getName();},1500);
</script>
 









相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.