Kontenery dokumentów aktywnych
Kontenerem aktywnego dokumentu, takiego jak Microsoft Office Binder lub programu Internet Explorer pozwala na pracę z kilku dokumentów różnych typów aplikacji w ramach jednej klatki (nie zmusza użytkowników do tworzenia i używania wielu klatek aplikacji dla każdego typu dokumentu).
MFC zapewnia pełną obsługę kontenerów aktywny dokument w COleDocObjectItem klasy.Kreator aplikacji MFC służy do tworzenia kontenerem aktywnego dokumentu przez wybranie kontener aktywnego dokumentu pole wyboru na Mieszanki Obsługa dokumentów stronie Kreatora aplikacji MFC.Aby uzyskać więcej informacji, zobacz tworzenia aplikacji kontenera aktywnego dokumentu.
Aby uzyskać więcej informacji dotyczących kontenerów aktywnego dokumentu zobacz:
Wymagania pojemnika
Obiekty lokacji dokumentu
Obiekty lokacji widoku
Umieść obiekt w ramce
Wymagania pojemnika
Wsparcie aktywnego dokumentu w pojemniku aktywnego dokumentu oznacza więcej niż tylko implementacje interfejsu: również wymaga znajomości przy użyciu interfejsów jako obiekt.To samo dotyczy rozszerzenia aktywnego dokumentu, gdzie kontener musi również wiedzieć, jak używać tych interfejsów rozszerzenie na same dokumenty active.
Kontenerem aktywnego dokumentu, integrującą aktywne dokumenty muszą:
Być zdolne do obsługi przechowywania obiektów za pomocą IPersistStorage interfejsu, to znaczy, musi ono zapewnić, IStorage wystąpienie każdego aktywnego dokumentu.
Obsługuje podstawowe funkcje osadzania dokumentów OLE, wymagających obiektów "site" (po jednym na dokumencie lub osadzanie) które implementują IOleClientSite i IAdviseSink.
Obsługuje aktywację na miejscu obiekty osadzone lub dokumentów aktywnych.Obiekty lokacji kontener musi implementować IOleInPlaceSite i ramki kontener musi dostarczyć IOleInPlaceFrame.
Obsługuje rozszerzeń aktywne dokumenty z zastosowaniem IOleDocumentSite aby zapewnić mechanizm kontener, aby porozmawiać z dokumentu.Opcjonalnie, kontener może implementować interfejsów aktywnego dokumentu IOleCommandTarget i IContinueCallback odebrać prostych poleceń, takich jak drukowanie lub zapisywanie.
Opcjonalnie można zaimplementować obiekt ramki, wyświetlanie obiektów i obiekt kontenera IOleCommandTarget do obsługi wysyłki niektórych poleceń, omówionego w Cele polecenia.Widok i kontener obiektów również opcjonalnie można zaimplementować IPrint i IContinueCallback, do obsługi drukowania programowych, omówionego w Programowych drukowania.
Na poniższej ilustracji pokazano koncepcyjne relacje między kontenerem i jego składników (z lewej) i aktywnego dokumentu i swoje stanowisko (po prawej).Aktywny dokument zarządza składowania i danych, a widok wyświetla lub opcjonalnie drukuje dane.Interfejsy czcionką pogrubioną są wymaganymi dla aktywnego dokumentu uczestnictwa; pogrubienie i kursywa są opcjonalne.Inne interfejsy są wymagane.
Dokument, który obsługuje tylko jeden widok można implementować zarówno wyświetlanie, jak i dokument składników (czyli ich odpowiednich interfejsów) na jedną klasę betonu.Ponadto lokacji kontenera, który obsługuje tylko jeden widok w danej chwili można łączyć witrynie dokumentu i widoku w klasy betonu lokacja.Kontener ramki obiektu, musi pozostać jednak odrębne, a kontener dokumentu jedynie znajdujący się w tym miejscu dać pełny obraz architektury; nie dotyczy to architektura zamknięcia aktywnego dokumentu.
Obiekty lokacji dokumentu
W architekturze zamknięcia aktywnego dokumentu, strony dokumentu jest taki sam, jak obiekt lokacji klienta w dokumentach OLE z dodatkiem IOleDocument interfejsu:
interface IOleDocumentSite : IUnknown
{
HRESULT ActivateMe(IOleDocumentView *pViewToActivate);
}
Strona dokumentu jest koncepcyjnie kontener dla jednego lub kilku obiektów "Wyświetl witrynę".Każdy obiekt typu lokacja widok jest skojarzony z widoku poszczególnych obiektów dokumentu zarządzanego przez stronę dokumentu.Jeśli kontener obsługuje tylko jeden widok na stronie dokumentu, można go również implementować witrynie dokumentu i widok z jedną klasę betonu.
Obiekty lokacji widoku
Kontener widoku witryny obiektu zarządza miejsca wyświetlania dla określonego widoku dokumentu.Oprócz obsługi standardu IOleInPlaceSite także ogólnie implementuje interfejs, Wyświetl witrynę IContinueCallback dla programistyczny nadzór drukowania. (Należy zauważyć, że obiekt widoku nigdy nie wyśle kwerendy o IContinueCallback tak rzeczywiście może być implementowana na dowolny obiekt kontenera pragnienia.)
Kontener, który obsługuje wiele widoków musi być może utworzyć widok wielu obiektów lokacji na stronie dokumentu.Zapewnia to każdego widoku z oddzielne usługi aktywacji i dezaktywacji przewidzianych przez IOleInPlaceSite.
Umieść obiekt w ramce
Kontener ramka jest w przeważającej części tej samej ramce, który jest używany do aktywacji w miejscu w dokumentach OLE, to znaczy, który obsługuje negocjacji menu i paska narzędzi.Wyświetl obiekt ma dostęp do tego obiektu ramki za pomocą IOleInPlaceSite::GetWindowContext, który zapewnia także dostęp do obiektu Kontener reprezentujący kontener dokumentu (który może obsługiwać negocjacji z poziomu okienka narzędzi i wyliczenie przechowywany obiekt).
Kontenerem aktywnego dokumentu można poszerzyć ramki przez dodanie IOleCommandTarget.Dzięki temu na odbieranie poleceń, które pochodzą z interfejsu użytkownika aktywnego dokumentu w taki sam sposób, że ten interfejs może pozwolić pojemnik do wysyłania poleceń sam (takie jak Nowy plik, Otwórz, Zapisz jako, wydruku; Edycji kopii, Wklej, Cofniji inne) do aktywnego dokumentu.Aby uzyskać więcej informacji, zobacz Cele polecenia.