다음을 통해 공유


컨테이너의 기능 사용

이전 섹션에서는 컨테이너의 특정 기능에 액세스하기 위해 ActiveX 컨트롤에 필요한 호출자 쪽 지원 중 일부를 설명했습니다. 다음 표에서는 컨트롤의 컨테이너 쪽 인터페이스 사용 및 이러한 사용이 발생하는 시기를 설명합니다.

인터페이스 Container 개체 사용량
IOleClientSite
사이트
IOleObject를 구현하는 컨트롤은 표준 OLE 포함 프로토콜의 일부로 IOleClientSite 메서드를 호출합니다. 특히 SaveObject, ShowObject, OnShowWindow 메서드(별도의 창 활성화 상태가 지원되는 경우에만), RequestNewObjectLayout 및 GetContainer(다른 컨트롤과의 통신이 필요한 경우). GetMoniker 메서드는 컨트롤을 외부에 연결할 수 있는 경우에만 사용됩니다. 즉, 컨트롤이 OLEMISC_CANTLINKINSIDE 표시되지 않습니다.
IOleInPlaceSite
사이트
현재 위치 활성화 및 UI 활성 상태일 수 있는 컨트롤은 표준 OLE 현재 위치 활성화 프로토콜의 일부로 IOleInPlaceSite 메서드(일반적으로 ContextSensitiveHelp를 제외한 모든 메서드)를 호출합니다.
IAdviseSink
사이트
컨트롤이 IViewObject2를 지원하는 경우 컨트롤이 IDataObject, OnViewChange를 지원하는 경우 컨트롤이 OnDataChange를 호출하고, 컨트롤이 IOleObject를 지원하는 경우 OnClose, OnSaveOnRename을 호출합니다.
IOleControlSite
사이트
지원되는 경우 컨트롤은 니모닉이 변경될 때 OnControlInfoChanged , 이벤트가 발생하면 LockInPlaceActiveTransformCoords 를 호출합니다(후자의 메서드는 좌표가 이벤트 인수로 전달되는 경우에만 사용됨), 컨트롤에 UI 활성 상태가 있는 경우 OnFocusTranslateAccelerator , 컨트롤이 확장 컨트롤(컨테이너 소유) 속성을 확인하려는 경우 GetExtendedControl 을 호출합니다.
IDispatch (앰비언트 속성)
사이트
주변 속성에 액세스하는 데 사용됩니다.
IPropertyNotifySink
상황에 따라 다름
컨트롤은 각각 [바인딩 가능] 및 [요청]으로 표시된 컨트롤 속성에 대해 OnChangedOnRequestEdit를 생성해야 합니다.
기타 이벤트 싱크 인터페이스
상황에 따라 다름
IPropertyNotifySink 이외의 나가는 인터페이스가 있는 컨트롤은 컨트롤의 IConnectionPoint::Advise 구현(일반적으로 컨트롤의 하위 개체에 있는)에 올바른 IID의 다른 인터페이스 포인터를 전달합니다. 컨트롤이 해당 인터페이스를 정의하기 때문에 컨트롤은 항상 자체 이벤트 인터페이스를 호출하는 방법을 알고 있습니다.
IOleInPlaceFrame
프레임
컨트롤에 프레임 수준 도구 또는 메뉴 항목이 필요한 현재 위치 UI 활성 상태가 있는 경우에 사용됩니다.
IOleInPlaceUIWindow
문서
컨트롤에 문서 수준 또는 창 수준 UI 도구가 필요한 현재 위치 UI 활성 상태가 있는 경우에만 사용됩니다. 이러한 경우는 드뭅니다.

컨트롤