액티브 문서 컨테이너
Microsoft Office Binder 또는 Internet Explorer와 같은 활성 문서 컨테이너를 사용하면 각 문서 형식에 대해 여러 응용 프로그램 프레임을 만들고 사용하도록 강제하는 대신 단일 프레임 내에서 여러 애플리케이션 유형의 여러 문서를 사용할 수 있습니다.
MFC는 클래스의 활성 문서 컨테이너를 COleDocObjectItem
완전히 지원합니다. MFC 애플리케이션 마법사의 복합 문서 지원 페이지에서 활성 문서 컨테이너 검사 상자를 선택하여 MFC 애플리케이션 마법사를 사용하여 활성 문서 컨테이너를 만들 수 있습니다. 자세한 내용은 활성 문서 컨테이너 애플리케이션 만들기를 참조 하세요.
활성 문서 컨테이너에 대한 자세한 내용은 다음을 참조하세요.
컨테이너 요구 사항
활성 문서 컨테이너의 활성 문서 지원은 인터페이스 구현 이상의 것을 의미합니다. 또한 포함된 개체의 인터페이스를 사용하는 방법에 대한 지식이 필요합니다. 현재 문서 확장에도 동일하게 적용됩니다. 여기서 컨테이너는 활성 문서 자체에서 해당 확장 인터페이스를 사용하는 방법도 알아야 합니다.
활성 문서를 통합하는 활성 문서 컨테이너는 다음을 수행해야 합니다.
인터페이스를 통해
IPersistStorage
개체 스토리지를 처리할 수 있어야 합니다. 즉, 각 활성 문서에 인스턴스를 제공해야IStorage
합니다.OLE 문서의 기본 포함 기능을 지원합니다. 이를 구현
IOleClientSite
하고IAdviseSink
구현하는 "사이트" 개체(문서 또는 포함당 하나)가 필요합니다.포함된 개체 또는 활성 문서의 현재 위치 활성화를 지원합니다. 컨테이너의 사이트 개체는 구현
IOleInPlaceSite
해야 하며 컨테이너의 프레임 개체는 제공해야IOleInPlaceFrame
합니다.컨테이너가 문서와 통신할 수 있는 메커니즘을 제공하도록 구현하여
IOleDocumentSite
현재 문서의 확장을 지원합니다. 필요에 따라 컨테이너는 활성 문서 인터페이스를IOleCommandTarget
구현하고 인쇄 또는 저장과IContinueCallback
같은 간단한 명령을 선택할 수 있습니다.
프레임 개체, 뷰 개체 및 컨테이너 개체는 명령 대상에 설명된 대로 특정 명령의 디스패치를 지원하기 위해 선택적으로 구현 IOleCommandTarget
할 수 있습니다. 프로그래밍 방식 인쇄에 설명된 대로 뷰 및 컨테이너 개체는 프로그래밍 방식 인쇄를 지원하기 위해 선택적으로 구현 IPrint
하고 IContinueCallback
지원할 수도 있습니다.
다음 그림에서는 컨테이너와 해당 구성 요소(왼쪽) 간의 개념적 관계와 현재 문서와 해당 뷰(오른쪽)를 보여 줍니다. 현재 문서는 스토리지 및 데이터를 관리하며 보기는 해당 데이터를 표시하거나 선택적으로 인쇄합니다. 굵게 표시된 인터페이스는 현재 문서 참여에 필요한 인터페이스입니다. 이러한 굵은 기울기 및 기울기 기능은 선택 사항입니다. 다른 모든 인터페이스가 필요합니다.
단일 보기만 지원하는 문서는 단일 구체적인 클래스에서 뷰 및 문서 구성 요소(즉, 해당 인터페이스)를 모두 구현할 수 있습니다. 또한 한 번에 하나의 보기만 지원하는 컨테이너 사이트는 문서 사이트와 뷰 사이트를 단일 콘크리트 사이트 클래스로 결합할 수 있습니다. 그러나 컨테이너의 프레임 개체는 기본 고유해야 하며, 컨테이너의 문서 구성 요소는 아키텍처의 전체 그림을 제공하기 위해 여기에 포함되어야 합니다. 현재 문서 포함 아키텍처의 영향을 받지 않습니다.
문서 사이트 개체
현재 문서 포함 아키텍처에서 문서 사이트는 인터페이스를 추가하여 OLE Documents의 IOleDocument
클라이언트 사이트 개체와 동일합니다.
interface IOleDocumentSite : IUnknown
{
HRESULT ActivateMe(IOleDocumentView *pViewToActivate);
}
문서 사이트는 개념적으로 하나 이상의 "사이트 보기" 개체에 대한 컨테이너입니다. 각 보기 사이트 개체는 문서 사이트에서 관리하는 문서의 개별 보기 개체와 연결됩니다. 컨테이너가 문서 사이트당 단일 보기만 지원하는 경우 단일 구체적인 클래스를 사용하여 문서 사이트와 뷰 사이트를 구현할 수 있습니다.
사이트 개체 보기
컨테이너의 뷰 사이트 개체는 문서의 특정 보기에 대한 표시 공간을 관리합니다. 표준 IOleInPlaceSite
인터페이스를 지원하는 것 외에도 보기 사이트는 일반적으로 프로그래밍 방식 인쇄 제어를 위해 구현됩니다 IContinueCallback
. (뷰 개체는 쿼리하지 IContinueCallback
않으므로 컨테이너가 원하는 개체에 실제로 구현할 수 있습니다.)
여러 보기를 지원하는 컨테이너는 문서 사이트 내에서 여러 보기 사이트 개체를 만들 수 있어야 합니다. 이렇게 하면 각 보기에 제공된 IOleInPlaceSite
대로 별도의 활성화 및 비활성화 서비스가 제공됩니다.
프레임 개체
대부분의 경우 컨테이너의 프레임 개체는 OLE 문서의 현재 위치 활성화에 사용되는 프레임과 동일한 프레임, 즉 메뉴 및 도구 모음 협상을 처리하는 프레임입니다. 뷰 개체는 컨테이너 문서를 나타내는 컨테이너 개체에 대한 액세스 권한을 제공하는 이 프레임 개체 IOleInPlaceSite::GetWindowContext
에 액세스할 수 있습니다(창 수준 도구 모음 협상 및 포함된 개체 열거형을 처리할 수 있음).
활성 문서 컨테이너는 .를 추가하여 IOleCommandTarget
프레임을 보강할 수 있습니다. 이렇게 하면 현재 문서의 사용자 인터페이스에서 시작된 명령을 이 인터페이스에서 컨테이너가 동일한 명령(예: 파일 새로 만들기, 열기, 다른 이름으로 저장, 인쇄)을 보낼 수 있는 것과 동일한 방식으로 수신할 수 있습니다.복사, 붙여넣기, 실행 취소 등)을 현재 문서에 편집합니다. 자세한 내용은 명령 대상을 참조 하세요.