程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> ActiveX開發知多少?

ActiveX開發知多少?

編輯:關於C語言

由於前段時間要為一個項目定制一個電子地圖+視頻監控系統,考慮到公司現有的開發資源C#項目組)及已經完成的下層業務框架C++實現),選擇了.net技術結合ActiveX來實現需求。由於下層業務框架是我編寫的,所以開始了自己的編寫Activex插件之旅。

按照我的習慣在接觸一個新技術時並不會匆匆開始上手實現,而是在了解基本原理之後再著手。所以通過各種百科了解了一些關於ActiveX的背景和使用場景。又深入其背後的COM技術浏覽了潘愛民老師的《COM本質論》這本書,了解了一下Activex背後的思想。於是乎在理清了ActiveX的基本脈絡後開始了業務插件的編寫。

ActiveX插件最基本的兩個用法:方法接口和事件接口

方法接口是這麼一個過程,調用——>等待結果返回。可是一個同步方法接口再結合js的單線程特性在界面端體驗方面卻有一個致命缺陷,在等待這個接口返回的時候整個界面會僵死,不能響應任何動作。

異步方法接口雖然能立馬返回,但又如何來獲取最終結果呢?剛好,事件接口可以解決這個問題,我們可以在前台注冊這個事件,然後由ActiveX後台來響應這個事件,從而前台可以獲取正確的結果,類似於我們熟悉的回調函數。 推薦阮一峰的這篇文章《Javascript異步編程的4種方法》來了解下以上我說的兩種情況。

就這麼簡單?可是現實仿佛並不是如此,我們要把一個接口寫成異步接口,肯定要在接口內部開啟一個線程來執行耗時較長的操作,然後在操作完成後響應事件通知上層獲取數據。這裡有個坑,你要是在所啟線程中去響應事件接口,前台是無法響應的。怎麼辦呢?解決方案在這裡《How to start a second thread in an MFC-based ActiveX control to fire events in Visual C++》。

備忘錄

“愛遺忘這人類天性”也絕對是我們程序員的一個殺手锏,不說別的,影響工作效率!我一個月前寫完了幾個方法接口、事件接口後昨天因為需求更改再寫時居然忘了IDE的快捷途徑了,求助了google大神後搞定,所以我得為幾個點建一個備忘錄。

  • 備忘錄1:如何在工程裡添加方法、事件接口

    在這貨這裡添加方法:

    211951938.jpg

    在這貨這裡添加事件:

    212042406.jpg

    注:如提示找不到事件接口的錯誤,自己手動在相應位置加上就好)

  • 備忘錄2:ActiveX插件測試調試的兩大利器

    TstCon32.exe,Microsoft ActiveX Control Pad;

  • 備忘錄3:js腳本調用方法,事件的代碼示例

這幾點可以說明問題

212129775.jpg


另外還有些ActiveX空間的簽名打包類的知識,很多前端的文章都有介紹,我就不在這獻丑了。


本文出自 “永遠的朋友” 博客,請務必保留此出處http://yaocoder.blog.51cto.com/2668309/1325664

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved