다음을 통해 공유


컨테이너 기능 사용

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

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

제어