--- tags: MFC, C++, C, ATL, ActiveX --- # ActiveX 起源 ActiveX組件實際上是指一些可執行的代碼或一個程式,比如一個.EXE、.DLL或.OCX檔案,通過ActiveX技術,程式員就能夠將這些可復用的軟體組裝到應用程式或者服務程式中去,嵌入到網頁中,隨網頁傳送到客戶的流覽器上,並在客戶端執行。 通過編程,ActiveX控制項可以與Web流覽器互動或與客戶互動。 微軟定義根據微軟權威的軟體開發指南MSDN(Microsoft Developer Network)的定義,ActiveX外掛程式以前也叫做OLE控制項或OCX控制項,它是一些軟體組件或對象,可以將其插入到WEB網頁或其它應用程式中。 # 控制項介紹 ## ActiveX 控制項 以前稱為 OLE 控制項或 OCX 控制項是組件 (或對象) 打包別人編程功能.以便您可以重用 Web頁或在其他程式中插入。 例如, 隨 InternetExplorer 一起提供 ActiveX 控制項可用于增強 Web頁具有復雜格式功能和動畫。 ActiveX 控制項結合了Java 程式和 Netscape 外掛程式優點,還可以用許多程式語言, 包括所有 Microsoft 編程和在資料庫語言編寫程式中使用 ActiveX 控制項。 ## ActiveX 文檔 用一個 ActiveX - 識別 Web 流覽器如 InternetExplorer, 流覽時 ActiveX 文檔使您能夠使用自己的工具列和選單可開啟程式。 這意味著您可以通過使用 ActiveX - 識別 Web 流覽器開啟非HTML 檔案, 如 MicrosoftExcel 或 MicrosoftWord 檔案。 ## ActiveX 腳本 ActiveX 腳本支持最常用腳本語言, 包括 Microsoft VisualBasic 腳本和 JavaScript。 ActiveX 腳本可用于集成行為若幹 ActiveX 控制項或 Java 程式從 Web 流覽器或伺服器, 擴展其功能。 # 控制項特點 ActiveX外掛程式軟體的特點是:一般軟體需要使用者單獨下載然後執行安裝,而ActiveX外掛程式是當使用者流覽到特定的網頁時,IE流覽器即可自動下載並提示使用者安裝。 ActiveX外掛程式安裝的一個前提是必須經過使用者的同意及確認。 ActiveX外掛程式技術是國際上通用的基于Windows平台的軟體技術,除了網路實名外掛程式之外,許多軟體均採用此種方式開發,例如Flash動畫播放外掛程式、Microsoft MediaPlayer外掛程式、CNNIC通用網址外掛程式等。 早期的金融讀卡機、憑證作業,都是使用IE 的activeX完成 # COM 、MFC 、 ATL ## COM COM 是建立 ActiveX 控制項和 OLE 的基礎「物件模型」。 COM 可讓物件向其他元件公開其功能,以及裝載應用程式。 它會定義物件本身的公開方式,以及此風險在跨進程和跨網路之間的運作方式。 COM 也會定義物件的生命週期。 但因為程式開發者必須自己撰寫COM相關物件,導致程式開發者要多去學習不是他們專注的程式上。微軟後續推出MFC的架構改善此問題。 ## MFC MFC是Win API与C++的结合,API,即微软提供的WinOS下应用程序的编程语言接口,是一种软件编程的规范,但不是一种程序开发语言本身,可以允许用户使用各种各样的第三方(如我是一方,微软是一方,Borland就是第三方)的编程语言来进行对Win OS下应用程序的开发,使这些被开发出来的应用程序能在WinOS下运行,比如VB,VC++,Java,Dehpi编程语言函数本质上全部源于API,因此用它们开发出来的应用程序都能工作在WinOS的消息机制和绘图里,遵守WinOS作为一个操作系统的内部实现,这其实也是一种必要,微软如果不提供API,这个世上对Win编程的工作就不会存在,微软的产品就会迅速从时尚变成垃圾,上面说到MFC是微软对API函数的专用C++封装,这种结合一方面让用户使用微软的专业C++ SDK来进行Win下应用程序的开发变得容易,因为MFC是对API的封装,微软做了大量的工作,隐藏了好多内节程序开发人员在Win下用C++ & MFC编制软件时的大量内节,如应用程序实现消息的处理,设备环境绘图,这种结合是以方便为目的的,必定要付出一定代价(这是微软的一向作风),因此就造成了MFC对类封装中的一定程度的的冗余和迂回,但这是可以接受的 ## ATL 随着Internet的发展,分布式的组件技术要求COM组件能够在网络上传输,而又尽量节约宝贵的网络带宽资源。采用MFC开发的COM组件由于种种限制不能很好地满足这种需求,因此Microsoft在1995年又推出了一种全新的COM开发工具——ATL ATL是ActiveXTemplateLibrary的缩写,它是一套C++模板库。使用ATL能够快速地开发出高效、简洁的代码,同时对COM组件的开发提供最大限度的代码自动生成以及可视化支持。为了方便使用,从MicrosoftVisualC++5.0版本开始,Microsoft把ATL集成到VisualC++开发环境中。1998年9月推出的VisualStudio6.0集成了ATL3.0版本。目前,ATL已经成为Microsoft标准开发工具中的一个重要成员,日益受到C++开发人员的重视。 MFC还提供对Automation和ActiveXControl的支持,对于这两个方面,VisualC++也提供了相应的AppWizard和ClassWizard支持,这种可视化的工具更加方便了COM应用的开发