Udostępnij za pośrednictwem


Aktywne dokumenty

Aktywne dokumenty rozszerzyć dokument złożony technologii OLE.Rozszerzenia te są dostarczane w formie dodatkowych interfejsy, które Zarządzanie widokami, tak aby obiekty mogą funkcjonować w pojemnikach i jeszcze zachować kontrolę nad ich wyświetlania i funkcji drukowania.Ten proces powoduje wyświetlanie dokumentów, zarówno w obcych ramki (takich jak Microsoft Office Binder lub Microsoft Internet Explorer), jak i ramki macierzystej (takich jak porty widok własnych produktów).

W tej sekcji opisano funkcjonalności wymagania dotyczące dokumentów active.Aktywny dokument posiada zestaw danych i ma dostęp do składowania, gdzie można zapisać i pobierane dane.Można ją tworzyć i zarządzać jeden lub więcej widoków na jego danych.Oprócz obsługi osadzanie zwykłe i aktywacja w miejscu interfejsy OLE dokumentów, aktywny dokument komunikuje się możliwość tworzenia widoków poprzez IOleDocument.Przez ten interfejs kontenera, można poprosić o tworzenie (i ewentualnie wyliczyć) widoki, które można wyświetlić aktywnego dokumentu.Za pomocą tego interfejsu aktywnego dokumentu oferuje również różne informacje, takie jak czy obsługuje wiele widoków lub złożonych prostokąty.

Oto IOleDocument interfejsu.Należy zauważyć, że IEnumOleDocumentViews interfejsu jest standardowy moduł wyliczający OLE dla IOleDocumentView * typów.

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);

}

Każdy aktywny dokument musi mieć dostawcy ramki widoku przy użyciu tego interfejsu.Jeśli dokument nie jest osadzona w kontenerze, samego serwera aktywnego dokumentu należy zapewnić ramki widoku.Osadzone w pojemniku aktywnego dokumentu aktywnego dokumentu kontener zawiera ramki widoku.

Aktywny dokument można utworzyć jeden lub więcej rodzajów Widoki swoje dane (na przykład normalne, konspekt, strony układu i tak dalej).Widoki działają jak filtry, przez które dane są widoczne.Nawet, jeśli dokument ma tylko jeden typ widoku, może nadal chcesz obsługiwać wiele widoków jako środki wspierające nowe funkcje okna (na przykład Nowego okna element na okna menu w aplikacjach pakietu Office).

Wymagania dotyczące dokumentów aktywnych

Aktywny dokument, wyświetlanego w aktywnym dokumencie pojemniku musi:

  • Użyj OLE złożone pliki jako mechanizm przechowywania implementując IPersistStorage.

  • Obsługę podstawowych funkcji osadzania OLE dokumentów, łącznie z Utwórz Z pliku.Wymaga to interfejsy IPersistFile, IOleObject, i IDataObject.

  • Obsługuje jeden lub więcej widoków, z których każdy jest w stanie w miejscu aktywacji.Oznacza to, że widoki musi obsługiwać interfejs IOleDocumentView jak również interfejsy IOleInPlaceObject i IOleInPlaceActiveObject (przy użyciu kontenera IOleInPlaceSite i IOleInPlaceFrame interfejsów).

  • Obsługuje interfejsy standardowy dokument aktywny IOleDocument, IOleCommandTarget, i IPrint.

Wiedza, kiedy i jak używać interfejsów po stronie kontenera jest implikowana w tych wymagań.

Wymagania dotyczące obiektów w widoku

Aktywny dokument można utworzyć jeden lub więcej widoków danych.Funkcjonalnie te widoki przypominają portów na szczególne metody wyświetlania danych.Jeżeli aktywny dokument obsługuje tylko jeden widok, aktywny dokument i że jednego widoku można realizowane przy użyciu pojedynczej klasy.IOleDocument::CreateView zwraca ten sam obiekt IOleDocumentView wskaźnika interfejsu.

Być reprezentowane w ramach kontenerem aktywnego dokumentu, musi obsługiwać składnika widoku IOleInPlaceObject i IOleInPlaceActiveObject na 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);

}

Każdy widok ma skojarzone Wyświetl witrynę, która hermetyzuje ramki widoku i port widoku (HWND i prostokątny obszar, w tym oknie).Witryna udostępnia funkcję to jednak standard IOleInPlaceSite interfejsu.Należy pamiętać, że możliwe jest więcej niż jeden port widoku na pojedynczy HWND.

Zazwyczaj każdy typ widoku ma różnych reprezentacji drukowanych.Stąd widoki i odpowiadające im lokacje widoku należy zaimplementować drukowania interfejsów Jeśli IPrint i IContinueCallback, odpowiednio.Ramki widoku musi negocjować z dostawcy widoku za pomocą IPrint gdy drukowanie rozpocznie się, tak aby nagłówki, stopki, marginesy i elementy pokrewne są drukowane poprawnie.Dostawcy widoku powiadamia ramki zdarzenia związane z drukowaniem za pomocą IContinueCallback.Aby uzyskać więcej informacji na temat wykorzystania tych interfejsów, zobacz Drukowanie programowy.

Należy zauważyć, że jeśli aktywny dokument obsługuje tylko jeden widok, następnie aktywny dokument i że jednego widoku można zaimplementować za pomocą pojedynczego klasą.IOleDocument::CreateView po prostu zwraca ten sam obiekt IOleDocumentView wskaźnika interfejsu.Krótko mówiąc nie jest konieczne jest dwóch oddzielnych obiektów gdy wymagane jest tylko jeden widok.

Widok obiekt może być również docelowej polecenia.Implementując IOleCommandTarget widok może otrzymywać poleceń, które pochodzą z kontenera interfejsu użytkownika (takich jak Nowy, Otwórz, Zapisz jako, wydruku na pliku menu; and Copy, Paste, Undo on the Edit menu).Aby uzyskać więcej informacji, zobacz Obsługa wiadomości i cele polecenia.

Zobacz też

Koncepcje

Aktywne zamknięcia dokumentu