MFC ActiveX 控制項

ActiveX 控制項是以元件物件模型 (Component Object Model,COM) 為基礎的重複使用軟體元件,可支援各種不同的 OLE 功能,也能夠自訂來符合許多軟體需求。 ActiveX 控制項的設計以供一般 ActiveX 控制項容器中或在網際網路上,在全球資訊網的 Web 網頁中。 您可以使用 MFC,描述在這裡,或是使用其中一個建立 ActiveX 控制項作用中的樣板程式庫 (ATL)

ActiveX 控制項就可以繪製您自己在它自己的視窗中,回應事件 (例如,只需按滑鼠),並透過介面,其中包含屬性和方法類似於 Automation 物件中進行管理。

這些控制項可以開發的許多用途,如資料庫存取資料監視或圖形。 其可移植性,除了 ActiveX 控制項都支援至 ActiveX 控制項,例如與現有的 OLE 容器的相容性,以及能夠整合其功能表與 OLE 容器功能表之前無法使用的功能。 此外,ActiveX 控制項完全支援自動化,讓控制項公開 (expose) 讀取 \ 寫入屬性及一組控制項使用者可以呼叫的方法。

您可以建立無視窗的 ActiveX 控制項和控制項,這些頁將成為作用中時,只有建立視窗。 無視窗控制項加速您的應用程式的顯示方式,也可以具有透明及非矩形的控制項。 您也可以非同步地載入 ActiveX 控制項的屬性。

ActiveX 控制項都會實作成可用於任何 OLE 物件容器中的同處理序伺服器 (通常是小型的物件)。 請注意 ActiveX 控制項的完整功能只有在命令提示,要注意 ActiveX 控制項的設計中使用時,才能使用。 請參閱對其他應用程式的連接埠 ActiveX 控制項為一系列支援 ActiveX 控制項的容器。 這種容器類型,以下稱為 「 控制項容器 」,藉由使用控制項的屬性和方法,作用於 ActiveX 控制項,並從在 ActiveX 中的控制項事件的形式來接收告知。 下圖將說明這個互動。

ActiveX 控制項容器和視窗化 ActiveX 控制項之間的互動

ActiveX 控制項的互動

最佳化您的 ActiveX 控制項的一些新資訊,請參閱 MFC ActiveX 控制項: 最佳化

若要建立 MFC ActiveX 控制項,請參閱 ActiveX 控制項專案建立

如需詳細資訊,請參閱:

ActiveX 控制項的基本元件

ActiveX 控制項使用幾個程式設計項目與控制項容器及使用者進行有效的互動。 這些都是類別 COleControl、 一套事件引發函式,以及分派對應。

您開發的每個 ActiveX 控制項物件會繼承其 MFC 基底類別中的一組功能強大的功能COleControl。 這些功能包括就地啟動與自動化邏輯。 COleControl可以提供 control 物件具有相同的功能,做為 MFC 視窗物件,再加上引發事件的能力。 COleControl也可以提供無視窗控制項,而依賴其容器的某些功能的相關說明] 視窗提供 (滑鼠捕捉、 鍵盤焦點捲動),但是可以提供更快速的顯示。

因為控制項類別衍生自COleControl、 它所繼承的功能,若要傳送,或 「 火 」 訊息,稱為 「 事件,以符合特定條件時,控制項容器。 這些事件用來通知控制項容器時很重要的東西會發生在控制項中。 您可以傳送至控制項容器的事件的詳細資訊,藉由將參數附加至事件。 如需有關 ActiveX 控制項事件的詳細資訊,請參閱文章 MFC ActiveX 控制項: 事件

最後一個項目是分派對應,它用來公開 (expose) 一組函式 (稱為方法) 和使用者控制項屬性 (稱為屬性)。 屬性可以讓控制項容器或控制項使用者操作控制項以各種方式。 使用者可以變更控制項的外觀、 變更某些值的控制項,或提出要求的控制項,例如存取某一種控制項維護的資料。 這個介面由控制項開發人員也使用定義類別檢視。 如需有關 ActiveX 控制項方法和屬性的詳細資訊,請參閱文章 MFC ActiveX 控制項: 方法屬性

與 Windows 控制項和 ActiveX 控制項容器之間的互動

當控制項容器中使用控制項時,它會使用這兩個機制來進行通訊: 它會公開屬性和方法,則是引發事件。 下圖示範這兩個機制的實作方法。

ActiveX 控制項容器和 ActiveX 控制項之間的通訊

ActiveX 控制項通訊和 ActiveX 控制項容器

上圖也會說明如何處理其他的 OLE 介面 (除了自動化和事件) 的控制項。

所有與容器控制項的通訊都由COleControl。 若要以便處理一些容器要求 COleControl 會呼叫成員函式在控制項類別中實作。 如此一來處理所有的方法及一些屬性。 您的控制項類別也可以藉由呼叫成員函式的起始與容器通訊COleControl。 事件會以這種方式。

ActiveX 控制項的現用和現用狀態

控制項有兩種基本狀態: 作用中及非作用中。 傳統上來說,這些狀態是由控制項是否具有視窗有所區分。 使用中的控制項具有視窗 ; 不是作用中的控制項。 在引入無視窗啟動,不再是通用的這種區分,但仍適用於許多控制項。

無視窗控制項到使用中時,它會叫用滑鼠捕捉、 鍵盤焦點、 向下捲動,以及其他視窗服務從它的容器。 您也可以提供非作用中控制項的滑鼠互動、 以及建立控制項 建立視窗啟動等到

當具有視窗的控制項變成作用中時,便能將與控制項容器、 使用者及 Windows 進行完全的互動。 下圖將說明 ActiveX 控制項、 控制項容器和作業系統之間的通訊路徑。

在視窗型的 ActiveX 控制項 (當使用中時) 中處理 Windows 訊息

Win 訊息處理視窗化的 ActiveX 控制項 (現用)

序列化

序列化資料,有時也稱為保存性,可以讓控制項及其屬性的值寫入持續性儲存體。 然後可以藉由從儲存體讀取物件的狀態重新建立控制項。

請注意控制項並不負責取得儲存媒體的存取。 相反地,控制項的容器負責將儲存媒體使用適當的時機提供給控制項。 如需有關序列化的詳細資訊,請參閱文章 MFC ActiveX 控制項: 序列化。 將序列化最佳化的資訊,請參閱最佳化保存性及初始化 ActiveX 控制項中: 最佳化。

安裝 ActiveX 控制項類別和工具

當您安裝 Visual C++ 時,MFC ActiveX 控制類別和零售版,以及偵錯 ActiveX 控制項,如果在安裝程式 (這些預設選取),會選取 ActiveX 控制項,會自動安裝執行階段 Dll。

根據預設,ActiveX 控制項類別和工具被安裝在 \Program Files\Microsoft Visual Studio 下所有子目錄中。NET 中:

  • \Common7\Tools

    包含的測試容器檔案 (TstCon32.exe,以及它的說明檔)。

  • \Vc7\atlmfc\include

    包含開發使用 MFC 的 ActiveX 控制項所需的包含檔

  • \Vc7\atlmfc\src\mfc

    包含在 MFC 中特定的 ActiveX 控制項類別的原始程式碼

  • \Vc7\atlmfc\lib

    包含開發使用 MFC 的 ActiveX 控制項所需的程式庫

另外還有 MFC ActiveX 控制項的範例。 如需有關這些範例的詳細資訊,請參閱控制項範例: MFC-Based ActiveX 控制項

請參閱

其他資源

使用者介面