다음을 통해 공유


액티브 문서

액티브 문서는 OLE의 복합 문서 기술을 확장합니다.이러한 확장 개체 컨테이너 내에서 작동 하 고 아직 컨트롤의 표시 및 인쇄 기능을 유지할 수 있도록 하는 보기를 관리 하는 추가 인터페이스의 형태로 제공 됩니다.이 프로세스 외부 프레임 (예: Microsoft Internet Explorer 또는 Microsoft Office 바인더) 및 포트 제품의 보기) (같은 네이티브 프레임에 문서를 표시할 수 있습니다.

이 절은 기능 설명 액티브 문서의 요구 사항.현재 문서의 데이터 집합을 소유 하 고 액세스 저장소 위치 데이터를 저장 하 고 검색할 수 있습니다.만든 다음 하나 이상의 보기에서 데이터를 관리할 수 있습니다.일반적인 포함 및 OLE 문서의 현재 위치에서 활성화 인터페이스를 지 원하는 것 외에 현재 문서의 뷰를 만들 수 있는 기능과 통신 IOleDocument.이 인터페이스를 통해 컨테이너 만들기 (및 가능한 경우 열거) 액티브 문서가 표시할 수 있는 뷰 요청할 수 있습니다.이 인터페이스를 통해 현재 문서의 여러 뷰 또는 복잡 한 사각형 지원 여부와 같은 기타 정보 자체를 제공할 수도 있습니다.

다음은 IOleDocument 인터페이스입니다.이때의 IEnumOleDocumentViews 인터페이스에 대 한 표준 OLE 표시기입니다 IOleDocumentView * 형식입니다.

interface IOleDocument : IUnknown

{

HRESULT CreateView(

[in] IOleInPlaceSite *pIPSite,

[in] IStream *pstm,

[in] DWORD dwReserved,

[out] IOleDocumentView **ppView);

HRESULT GetDocMiscStatus([out] DWORD *pdwStatus);

HRESULT EnumViews(

[out] IEnumOleDocumentViews **ppEnum,

[out] IOleDocumentView **ppView);

}

모든 액티브 문서 뷰 프레임 공급자가 인터페이스가 있어야 합니다.문서가 컨테이너에 포함 되어 있지 않은 경우 해당 액티브 문서 서버 뷰 프레임을 제공 해야 합니다.그러나 액티브 문서는 액티브 문서 컨테이너에 포함 되 면 컨테이너 보기 프레임을 제공 합니다.

액티브 문서 유형을 하나 이상 만들 수 있습니다 보기 의 데이터 (예, 보통, 개요, 레이아웃, 페이지 등).뷰를 통해 데이터를 볼 수 있는 필터와 같은 역할을 합니다.문서 보기 중 하나만 있는 경우에, 여러 보기의 새 창 기능을 지 원하는 수단으로 지원 하 시겠습니까 수도 있습니다 (예를 들어, 있는 새 창 항목에 Office 응용 프로그램에서 메뉴).

활성 문서에 대 한 요구 사항

액티브 문서는 액티브 문서 컨테이너에 표시 될 수 있어야 합니다.

  • 구현 하 여 해당 저장소 메커니즘으로 사용 하는 OLE의 복합 파일 IPersistStorage.

  • OLE 포함 하 여 문서의 기본적인 포함 기능을 지 원하는 파일 로부터 만들기.이 인터페이스는 해야 할 IPersistFile, IOleObject, 및 IDataObject.

  • 각각의 내부 활성화가 가능 하나 이상의 뷰를 지원 합니다.즉, 뷰 인터페이스를 지원 해야 IOleDocumentView 뿐만 아니라 인터페이스 IOleInPlaceObjectIOleInPlaceActiveObject (컨테이너를 사용 하 여 IOleInPlaceSiteIOleInPlaceFrame 인터페이스).

  • 현재 문서의 표준 인터페이스를 지 원하는 IOleDocument, IOleCommandTarget, 및 IPrint.

때 필요한 지식과 컨테이너 쪽 인터페이스를 사용 하는 방법에 이러한 요구 사항을 암시.

뷰 개체에 대 한 요구 사항

액티브 문서는 하나 이상의 데이터 뷰를 만들 수 있습니다.기능적으로 포트 특정 데이터 표시 방법에 이러한 보기입니다.액티브 문서 및 뷰만 액티브 문서가 하나의 뷰만 지는 구현할 수 있습니다 단일 클래스를 사용 합니다.IOleDocument::CreateView 같은 개체를 반환 합니다. IOleDocumentView 인터페이스 포인터입니다.

액티브 문서 컨테이너 내에서 표현 하는, 보기 구성 요소 지원 해야 IOleInPlaceObjectIOleInPlaceActiveObject 뿐만 아니라 IOleDocumentView:

interface IOleDocumentView : IUnknown

{

HRESULT SetInPlaceSite([in] IOleInPlaceSite *pIPSite);

HRESULT GetInPlaceSite([out] IOleInPlaceSite **ppIPSite);

HRESULT GetDocument([out] IUnknown **ppunk);

[input_sync] HRESULT SetRect([in] LPRECT prcView);

HRESULT GetRect([in] LPRECT prcView);

[input_sync] HRESULT SetRectComplex(

[in] LPRECT prcView,

[in] LPRECT prcHScroll,

[in] LPRECT prcVScroll,

[in] LPRECT prcSizeBox);

HRESULT Show([in] BOOL fShow);

HRESULT UIActivate([in] BOOL fUIActivate);

HRESULT Open(void);

HRESULT CloseView([in] DWORD dwReserved);

HRESULT SaveViewState([in] IStream *pstm);

HRESULT ApplyViewState([in] IStream *pstm);

HRESULT Clone(

[in] IOleInPlaceSite *pIPSiteNew,

[out] IOleDocumentView **ppViewNew);

}

모든 보기 보기 프레임 및 뷰포트 (HWND 및 해당 창의 사각형 영역)을 캡슐화 하는 관련된 뷰 사이트가 있습니다.사이트가이 기능을 통해 표준 노출 IOleInPlaceSite 인터페이스입니다.메모를 둘 이상의 보기 포트는 단일 HWND 배치할 수 있습니다.

일반적으로 각 뷰 형식에 서로 다른 인쇄 된 표현이 있습니다.따라서 뷰와 해당 사이트 보기 인쇄 인터페이스 경우 구현 해야 IPrintIContinueCallback, 각각.보기 공급자를 통해 해당 뷰 프레임 협상 해야 IPrint 때 인쇄가 시작 됩니다, 머리글, 바닥글, 여백 및 관련된 요소를 제대로 인쇄 되도록 합니다.보기 공급자 프레임 인쇄 관련 이벤트를 통해 알립니다 IContinueCallback.이러한 인터페이스 사용에 대 한 자세한 내용은 참조 하십시오. 프로그래밍 방식으로 인쇄.

Note만 액티브 문서가 하나의 뷰만 지 고 해당 액티브 문서 및 뷰는 단일 구체 클래스를 사용 하 여 구현할 수 있습니다 것입니다.IOleDocument::CreateView 단순히 동일한 개체를 반환 합니다. IOleDocumentView 인터페이스 포인터입니다.즉, 하나의 뷰만 필요한 경우에 두 개의 개별적인 개체 인스턴스가 있을 필요가 없습니다.

View 개체에 명령 대상이 될 수도 있습니다.구현 IOleCommandTarget 보기 컨테이너의 사용자 인터페이스는 명령 받을 수 있습니다 (같은 New, 열기, 다른 이름으로 저장, 인쇄파일 메뉴; and Copy, Paste, Undo on the Edit menu).자세한 내용은 메시지 처리 및 명령 대상를 참조하십시오.

참고 항목

개념

액티브 문서 포함