Aktywny dokument kontenerów
Kontenerem aktywnego dokumentu, takich jak Microsoft Office Binder lub Internet Explorer umożliwia pracę z kilku dokumentów stosowania różnych typów w pojedynczej ramce (zamiast wymuszania, można tworzyć i używać wielu ramek aplikacji dla każdego typu dokumentu).
MFC zapewnia pełną obsługę kontenerów aktywny dokument w COleDocObjectItem klasy.Kreator aplikacji MFC umożliwia tworzenie kontenerem aktywnego dokumentu, wybierając kontenera aktywnego dokumentu pole wyboru na Mieszanki Obsługa dokumentu strony Kreatora aplikacji MFC.Aby uzyskać więcej informacji, zobacz tworzenia aplikacji kontenera aktywnego dokumentu.
Aby uzyskać więcej informacji na temat kontenerów aktywnego dokumentu, zobacz:
Wymagania kontenera
Obiekty lokacji dokumentu
Wyświetlanie witryny obiektów
Ramka obiektu
Wymagania kontenera
Wsparcie aktywnego dokumentu w pojemniku aktywny dokument wymaga więcej niż tylko implementacje interfejsu: wymaga również znajomość przy użyciu interfejsów zamkniętego obiektu.To samo dotyczy rozszerzenia aktywnego dokumentu, gdzie kontenera również znać sposobów użycia tych interfejsów rozszerzenie na same dokumenty aktywne.
Kontener aktywnego dokumentu, który integruje aktywnych dokumentów muszą:
Być zdolne do obsługi przechowywania obiektu poprzez IPersistStorage interfejsu, oznacza to, że musi ona dostarczyć IStorage instancji każdego aktywnego dokumentu.
Obsługuje podstawowe funkcje osadzania dokumentów OLE, wymagających obiekty "site" (jeden na dokument lub osadzanie) wdrożenie tego IOleClientSite i IAdviseSink.
Obsługuje aktywację na miejscu obiekty osadzone lub dokumentów aktywnych.Obiekty lokacji kontener musi implementować IOleInPlaceSite i podać kontenera ramki obiektu IOleInPlaceFrame.
Obsługuje rozszerzeń dokumentów aktywnych implementując IOleDocumentSite zapewnienie mechanizmu dla kontenera porozmawiać z dokumentu.Opcjonalnie kontenera mogą zawierać interfejsy aktywnego dokumentu IOleCommandTarget i IContinueCallback do pobrania prostych poleceń, takich jak drukowanie lub zapisywanie.
Opcjonalnie można zaimplementować ramki obiektu, obiekty widoku i obiekt kontenera IOleCommandTarget do obsługi wysyłki niektórych poleceń, jak już wspomniano w Cele polecenia.Widok i kontenera obiektów również opcjonalnie można zaimplementować IPrint i IContinueCallback, do obsługi drukowania programowy, omówionego w Programowych drukowania.
Na poniższym rysunku pokazano koncepcyjne relacje między kontenerem i jego składników (po lewej), aktywnego dokumentu i opinii (po prawej).Aktywny dokument zarządza Magazyn i danych i widok wyświetla lub drukuje opcjonalnie danych.Interfejsy pogrubioną czcionką są wymagane dla dokumentu aktywnego uczestnictwa; pogrubienie i kursywa są opcjonalne.Inne interfejsy.
Dokument, który obsługuje tylko jeden widok można implementować części widoku i dokumentu (czyli ich odpowiednich interfejsów) na konkretnych jedną klasę.Dodatkowo witryny kontenera, który obsługuje tylko jeden widok, w czasie można połączyć w witrynie dokumentu i widoku w klasy jednej lokacji konkretnych.Obiekt ramka kontenera, jednakże musi pozostać odmienne i części dokumentu kontenera jedynie jest tutaj włączone do pełny obraz architektury; nie występuje przez architekturę zamknięcia aktywnego dokumentu.
Obiekty lokacji dokumentu
W architekturze zamknięcia aktywnego dokumentu witryny dokumentu jest taka sama jak obiekt lokacji klienta w dokumentach OLE z dodatkiem IOleDocument interfejsu:
interface IOleDocumentSite : IUnknown
{
HRESULT ActivateMe(IOleDocumentView *pViewToActivate);
}
Dokument jest koncepcyjnie kontenera dla jednego lub więcej obiektów "widok witryny".Każdy widok witryny obiekt jest skojarzony z widoku poszczególnych obiektów dokumentu, zarządzane przez witrynę dokumentów.Jeśli kontener obsługuje tylko jeden widok dla każdej witryny w dokumencie, następnie go można zaimplementować witrynie dokumentu i widoku z konkretnych jedną klasę.
Wyświetlanie witryny obiektów
Obiekt lokacji Widok kontenera zarządza miejsca wyświetlania dla określonego widoku dokumentu.Oprócz obsługi standardu IOleInPlaceSite również ogólnie implementuje interfejs, Wyświetl witrynę IContinueCallback dla kontrola programistyczna drukowania.(Należy zauważyć, że widok obiekt nigdy nie wyśle kwerendy o IContinueCallback tak rzeczywiście może być implementowana na dowolny obiekt pragnienia kontener.)
Kontener, który obsługuje wiele widoków musi być może utworzyć widok wielu obiektów witryny w witrynie dokumentu.Zapewnia to każdego widoku z oddzielnych usług aktywacji i dezaktywacji przewidzianych przez IOleInPlaceSite.
Ramka obiektu
Kontener ramka jest w przeważającej części tej samej ramce, który jest używany do aktywacji w miejscu, w dokumentach OLE, oznacza to, który obsługuje negocjacji menu i paska narzędzi.Widok obiekt ma dostęp do tego obiektu ramki przez IOleInPlaceSite::GetWindowContext, która umożliwia również dostęp do obiektu kontenera, reprezentujących dokumentu kontenera (który może obsłużyć negocjacji z poziomu okienka narzędzi i Wyliczanie zawartych obiektów).
Kontenerem aktywnego dokumentu można uzupełnić ramkę, dodając IOleCommandTarget.Pozwala to na odbieranie poleceń, które pochodzą z interfejsu użytkownika aktywny dokument w taki sam sposób, że ten interfejs umożliwia pojemnik do wysyłania poleceń (takich jak Nowy plik, Otwórz, Zapisać jako, wydruku; Edytuj kopię, Wklej, Cofniji inne) do aktywnego dokumentu.Aby uzyskać więcej informacji, zobacz Cele polecenia.