ActiveX 控制項是 Microsoft 基於 COM/OLE 技術推出的可重用軟體元件,同時具備:
IDispatch,可被腳本語言(VBScript、JavaScript)呼叫。<OBJECT> 標籤嵌入 HTML,IE 可動態下載、安裝、執行。ActiveX 控制項幾乎涵蓋 OLE 嵌入物件與容器互動的所有技術:
IStorage/IStream 持久化狀態。IDispatch 暴露屬性/方法/事件。IPropertyPage/IPropertyPageSite)。IPersistStream/IPersistStorage/IPersistPropertyBag。IConnectionPointContainer/IConnectionPoint 實現事件通知。控制項在容器視窗區域內直接繪製、處理輸入,提供「所見即所得」體驗。要求控制項與容器嚴格遵循 IOleInPlaceObject/IOleInPlaceSite 等介面協定。
屬性表包含多個屬性頁(標籤頁),每頁為無模式子視窗。四方互動:客戶端、COM 物件、屬性表、屬性頁,透過預定義 COM 介面與 API 通訊。
IPropertyNotifySink::OnRequestEdit。IPropertyNotifySink::OnChanged。IDispatch、型別庫)。IConnectionPointContainer)。IPersist* 系列)。| 介面 | 用途 |
|---|---|
IOleObject / IOleClientSite | OLE 嵌入物件基礎通訊(所有嵌入物件必須實作) |
IOleControl / IOleControlSite | ActiveX 專用擴展:環境屬性、鍵盤控制、擴展控制 |
IConnectionPointContainer | 管理連接點,支援事件多播 |
IProvideClassInfo / IProvideClassInfo2 | 提供型別資訊,支援動態綁定 |
IPersistStreamInit / IPersistStorage / IPersistPropertyBag | 多種持久化格式 |
codebase 屬性指定 URL。DllRegisterServer),IE 瀏覽頁面時自動註冊。| 工具 | 特點 | 適用場景 |
|---|---|---|
| MFC | 功能豐富、Wizard 支援、與 VC++ 整合緊密 | 複雜、功能完整的桌面/網頁控制項 |
| ATL (Active Template Library) | 輕量、高效、無 MFC 依賴、適合網路下載 | 小型、高效能、網頁部署的控制項 |
| BaseControl Framework | 底層框架、需深入理解結構 | 特殊需求、極度客製化控制項 |