コンテナー機能による分類
多くの場合、コンポーネントにはコンテナーの特定の機能が必要であり、サポートを提供しないコンテナーでは機能しません。 ユーザー インターフェイスは、コンテナーがサポートしていない機能を必要とするコンポーネントを除外する必要があります。 これを実現するために、コンポーネントは必要なコンテナー機能によって分類できます。
コンテナーの機能を必要とし、その機能をサポートしていないコンテナーでは機能しないコンポーネントの例は、単純なフレーム 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は表示されません。
関連トピック