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