依容器功能分類
元件通常需要來自容器的特定功能,且不適用於未提供支援的容器。 使用者介面應該篩選掉需要容器不支援功能的元件。 若要達成此目的,元件可以依必要的容器功能分類。
需要容器功能的元件範例,且無法在不支援該功能的容器中使用,這些元件是簡單的框架 OLE 控制件。 依容器功能分類是由元件 CLSID 機碼內的其他登錄機碼所完成:
;The CLSID for "Simple Frame Control" is {123456FF-ABCD-4321-0101-00000000000C}HKEY_CASSES_ROOT\CLSID\{12346FF-ABCD-4321-0101-00000000000C}\Implemented Categories
;The CATID for "Control" is {40FC6ED4-2438-11cf-A3DB-080036F12502} HKEY_CLASSES_ROOT\CLSID\{123456FF-ABCD-4321-0101-00000000000C}Implemented Categories\{40FC6ED4-2438-11cf-A3DB-080036F12502}
;The CATID for simple frame controls is {...CATID_SimpleFrameControl...} HKEY_CLASSES_ROOT\CLSID\{123456FF-ABCD-4321-0101-00000000000C}Implemented Categories\{...CATID_SimpleFrameControl...}
HKEY_CLASSES_ROOT\CLSID\{123456FF-ABCD-4321-0101-00000000000C}Required Categories\{...CATID_SimpleFrameControl...}
如此範例所示,元件可以屬於指出支援功能的元件類別,以及表示必要功能的元件類別。
在下列範例中,按鈕控件是不支援其他功能的泛型 OLE 控件。 它會在任何 OLE 控件容器中運作。
HKEY_CLASSES_ROOT\CLSID\{...CLSID_Button...}\Implemented Categories
HKEY_CLASSES_ROOT\CLSID\{...CLSID_Button...}\Implemented Categories\{...CATID_Control...}
比較上述範例與下一個範例,其中 MyDBControl 可以在容器支援時使用 Visual Basic 數據系結。 不過,它已定義,使其在不支援Visual Basic資料系結的容器中運作(可能是由不同的資料庫 API):
HKEY_CLASSES_ROOT\CLSID\{...CLSID_MyDBControl...}\Implemented Categories
HKEY_CLASSES_ROOT\CLSID\{...CLSID_MyDBControl...}\Implemented Categories\{...CATID_Control...}
HKEY_CLASSES_ROOT\CLSID\{...CLSID_MyDBControl...}\Implemented Categories\{...CATID_VBDatabound...}
GroupBox 控制件是簡單的框架控制項。 它依賴實作 ISimpleFrameSite 介面的容器,而且只能在這類容器中正確運作:
HKEY_CLASSES_ROOT\CLSID\{...CLSID_GroupBox...}\Implemented Categories
HKEY_CLASSES_ROOT\CLSID\{...CLSID_GroupBox...}\Implemented Categories\{...CATID_Control...}
HKEY_CLASSES_ROOT\CLSID\{...CLSID_GroupBox...}\Implemented Categories\{...CATID_SimpleFrame...}
HKEY_CLASSES_ROOT\CLSID\{...CLSID_GroupBox...}\Required Categories\{...CATID_SimpleFrame...}
支援 Visual Basic 數據綁定控件但不支援簡單框架控件的容器,會指定插入控件使用者介面的CATID_Control和CATID_VBDatabound。 向用戶顯示的控件清單會包含CLSID_Button和CLSID_MyDBControl。 不會顯示CLSID_GroupBox。
相關主題