元件類別及其運作方式
元件類別會識別軟體元件支援且需要的功能區域,登錄專案會用於每個類別或已識別的功能區域。 每個元件類別都是透過全域唯一標識元(GUID)來識別,當控件安裝時,它會使用控件的元件類別標識碼,將本身註冊為系統登錄中的控件,請參閱 控件的自我註冊。 在控件自我註冊中,它也會註冊其所實作的元件類別,以及需要容器支援才能成功裝載控件的元件類別。
當控件容器提供控制項給使用者插入時,它只允許使用者選取並具現化那些能夠在該環境中運作的控制件。 例如,如果控件容器不支持數據系結,則容器將不允許使用者選取並具現化登錄中具有專案,表示其需要數據系結元件類別目錄的控件。 有一個常見的對話框可供控件插入和 API 來處理登錄專案。
元件類別不是累計或獨佔,控件可能需要任何元件類別組合才能運作。 對於元件類別沒有必要專案的控件,可能會預期能夠在任何控件容器中運作,而且不需要控件容器的任何特定功能才能運作。
此處會識別下列元件類別,必要時可能會提供類別的詳細規格。
- ISimpleFrameSite 控制件內含專案。
- 透過 IPropertyNotifySink 介面的簡單數據系結。
- 進階數據系結(如 VB4.0 的其他數據系結介面所支援)。
- Visual Basic 私人介面 - IVBFormat、 IVBGetControl
- 因特網感知控制件。
- 無視窗控制件。
這不是類別的明確清單;隨著識別新的需求,未來可能會定義進一步的類別。 Microsoft 提供元件類別的最新清單;此清單會反映 Microsoft 所識別的元件類別,以及關於哪些廠商已通知 Microsoft 的任何其他元件類別。
請務必記住,控件應該嘗試在盡可能多的環境中運作。 如果可能的話,當放在不支援特定介面的容器中時,控件應該會降低其功能。 元件類別的目的是要防止控件放置在不適合的環境中,且控件無法達到其所需的工作。 一般而言,當介面不存在時,控件應該正常降級,控件可以選擇向使用者提供消息框,指出某些功能無法使用,或清楚地記錄控件容器所需的功能,以獲得最佳效能。
注意舊版控件和容器不會使用元件類別,而是依賴登錄中控件存在的control關鍵詞。 若要讓較舊的容器控件辨識,可能需要在登錄中註冊 control 關鍵詞,控件開發人員應該先檢查控件是否可以成功裝載於這類容器中,再執行此動作。 使用元件類別的容器可能會成功使用它們來裝載較舊的控件,因為元件類別 DLL 會處理對應,較舊的控件CATID_ControlV1有個別的類別,因此容器可以視需要選擇性地排除它們。
因為 GUID 會識別元件類別,因此,提供特定功能以有自己的類別識別碼的容器,可以使用 GUID 產生工具產生。 不過,這可能會破壞控件和容器互操作性的優點,因此最好盡可能使用現有的元件類別。 建議廠商在定義新的元件類別時共同諮詢,以確保它們符合市集的常見需求,並遵循 ActiveX 控件互操作性的精神。
相關主題