컨테이너의 기능 사용
이전 섹션에서는 컨테이너의 특정 기능에 액세스하기 위해 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, OnSave 및 OnRename을 호출합니다. |
IOleControlSite |
사이트 |
지원되는 경우 컨트롤은 니모닉이 변경될 때 OnControlInfoChanged , 이벤트가 발생하면 LockInPlaceActive 및 TransformCoords 를 호출합니다(후자의 메서드는 좌표가 이벤트 인수로 전달되는 경우에만 사용됨), 컨트롤에 UI 활성 상태가 있는 경우 OnFocus 및 TranslateAccelerator , 컨트롤이 확장 컨트롤(컨테이너 소유) 속성을 확인하려는 경우 GetExtendedControl 을 호출합니다. |
IDispatch (앰비언트 속성) |
사이트 |
주변 속성에 액세스하는 데 사용됩니다. |
IPropertyNotifySink |
상황에 따라 다름 |
컨트롤은 각각 [바인딩 가능] 및 [요청]으로 표시된 컨트롤 속성에 대해 OnChanged 및 OnRequestEdit를 생성해야 합니다. |
기타 이벤트 싱크 인터페이스 |
상황에 따라 다름 |
IPropertyNotifySink 이외의 나가는 인터페이스가 있는 컨트롤은 컨트롤의 IConnectionPoint::Advise 구현(일반적으로 컨트롤의 하위 개체에 있는)에 올바른 IID의 다른 인터페이스 포인터를 전달합니다. 컨트롤이 해당 인터페이스를 정의하기 때문에 컨트롤은 항상 자체 이벤트 인터페이스를 호출하는 방법을 알고 있습니다. |
IOleInPlaceFrame |
프레임 |
컨트롤에 프레임 수준 도구 또는 메뉴 항목이 필요한 현재 위치 UI 활성 상태가 있는 경우에 사용됩니다. |
IOleInPlaceUIWindow |
문서 |
컨트롤에 문서 수준 또는 창 수준 UI 도구가 필요한 현재 위치 UI 활성 상태가 있는 경우에만 사용됩니다. 이러한 경우는 드뭅니다. |