컨테이너 기능별 분류
구성 요소는 종종 컨테이너의 특정 기능이 필요하며 지원을 제공하지 않는 컨테이너에서는 작동하지 않습니다. 사용자 인터페이스는 컨테이너에서 지원하지 않는 기능이 필요한 구성 요소를 필터링해야 합니다. 이를 위해 필요한 컨테이너 기능으로 구성 요소를 분류할 수 있습니다.
컨테이너의 기능이 필요하고 해당 기능을 지원하지 않는 컨테이너에서 작동하지 않는 구성 요소의 예는 간단한 프레임 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 표시되지 않습니다.
관련 항목