1、ActiveX控制
ActiveX控制是Microsoft提供的功能強大的程序設計和開發技術。ActiveX控制既是一個自動化對象(當然也是一個標准的COM對象),也是一個界面元素,如同Windows的普通控制一樣。
ActiveX控制是一門綜合技術,它涉及到COM和OLE的許多技術精華,同時也與Windows操作系統緊密結合起來,它可作為Windows標准控制的一種擴充機制。
Microsoft把這種在Internet上使用的控制與OCX一起統稱為ActiveX控制,並且把所有建立在COM和OLE基礎上以及與Internet有關的技術統稱為ActiveX技術。
2、ActiveX控制的技術基礎
ActiveX控制的主要技術基礎為OLE復合文檔技術,它幾乎涉及OLE嵌入對象與包容器程序之間交互的所有技術,包括結構化存儲技術、自動化技術、實地激活(in-place activation,主要用於嵌入對象)、屬性頁技術、永久對象技術、可連接對象機制等等。
3、實地激活
實地激活(in-place activation)是指OLE對象的一種界面特性,具有實地激活特性的對象可以直接在包容器窗口內部進行編輯,所以有時我們也把這種特性稱作實地編輯(in-place editing)或可視編輯(visual editing)。
為了實現實地激活特性,要求OLE對象和包容器程序之間必須遵守嚴格的接口約定。
4、屬性頁
屬性頁(property page)是OLE的一項技術,它已經成為Windows 32位平台上表達屬性的基本手段。屬性表(property sheet)由多個屬性頁組成,每個屬性頁有一個標題(也稱為標簽),通常屬性表是一個有模式的對話框,而屬性頁是一個內嵌在屬性表對話框中的無模式窗口。
屬性頁技術涉及到四個方面:客戶方、COM對象、屬性表和屬性頁。它們相互之間的通信由一組預定義的COM接口以及API函數實現。
5、屬性變化通知
屬性變化通知包括兩種情形:第一,當對象改變其屬性時,它先向客戶發送一個請求,詢問客戶是否允許改變該屬性;第二,當對象已經改變了屬性之後,它向客戶發送一個通知告訴客戶該屬性已經被改變。
6、ActiveX控制的基本要求
屬性和方法管理、事件機制、用戶界面特性(可視性)、狀態永久性機制。
7、ActiveX控制基本結構
8、包容器
ActiveX控制的包容器程序通常是一個表單(form)或者對話框,也可以是復合文檔的視窗口(view)或文檔對象。包容器通常要管理多個ActiveX控制,或者其他Windows普通控制。
包容器的基本功能:布局功能、永久特性、環境屬性、事件處理機制、擴展控制、鍵盤功能。
包容器程序支持不同的情形,分別稱為設計模式和運行模式。
9、包容器的基本結構
10、使用的接口
IOleObject和IOleClientSite是OLE的基本接口。每一個嵌入對象必須實現IOleObject接口。
IOleControl和IOleControlSite接口擴展了ActiveX控制與站點對象之間的通信能力。由於IOleObject和 IOleClientSite主要用於OLE復合文檔與嵌入對象之間的通信,對於ActiveX控制與包容器,它還有其他的要求,比如環境屬性、鍵盤控制以及擴展控制等等,IOleControl和IOleControlSite接口正是針對這些特性而設計的。
11、ActiveX控制與Internet
Microsoft制定了COM規范,同時又在OLE的基礎上形成ActiveX控制標准。從基本的行為特性來講,ActiveX控制非常適用於Internet。
從包容器的角度進行考察,Internet浏覽器程序就是包容器。
為了使程序代碼量盡可能地小,Microsoft VisualC++提供了ATL模板庫作為這類ActiveX控制的基本開發工具。
IE要求ActiveX控制必須支持自注冊,以便在用戶浏覽包含ActiveX控制的Web頁面時,它可以動態地注冊控制。
一般的包容器程序通常只負責ActiveX控制的創建、運行和釋放,但IE要做的事情更多一些。
12、包裝ActiveX控制
Microsoft采用了慣用的CAB壓縮方法,它把ActiveX控制程序以及相關的其他文件放在同一個CAB文件中,然後在codebase屬性中指定CAB文件的URL路徑。
13、許可證管理
除了免費發行的ActiveX控制之外,大多數ActiveX控制都支持設計時刻和運行時刻的許可證檢查。設計時刻許可證檢查可以保證程序員在創建應用系統或者Web頁面時使用合法的ActiveX控制;運行時刻許可證檢查可以保證用戶運行一個包含合法控制的應用系統或者顯示一個包含合法控制的Web頁面。
14、ActiveX控制的開發與應用
Microsoft提供了三個開發ActiveX控制的工具:MFC類庫、ATL模板庫和BaseControl框架。
MFC重在功能,它與Visual C++集成環境緊密結合,利用MFC可以實現非常復雜的ActiveX控制。
ATL模板庫可專門用於開發COM對象,也包括ActiveX控制。利用ATL,我們可以開發出小巧、快速的ActiveX控制,特別適合於在Internet環境下使用。
BaseControl框架開發ActiveX控制要求程序員對框架結構非常了解,有一定的難度。