Kontenery: funkcje zaawansowane
W tym artykule opisano kroki niezbędne do włączenia do istniejących aplikacji kontenera opcjonalne funkcje zaawansowane.Funkcje te są:
Aplikacja, która jest zarówno serwer, jak i kontener
Łącze OLE obiekt osadzony
Tworzenie aplikacji kontenera/serwer
Aplikacja kontenera serwer jest aplikacja, która działa jako kontener i serwer.Przykładem tego jest program Microsoft Word dla Windows.Dokumenty programu Word dla systemu Windows można osadzić w innych aplikacjach, a elementy można także osadzić w dokumentach programu Word dla Windows.Proces modyfikowania aplikacji kontenera zarówno pojemnik i cały serwer (nie można utworzyć aplikacji kontenera/miniserver kombinacja) jest podobny do procesu tworzenia całego serwera.
Artykuł serwery: wdrażania serwera wymienia szereg zadania wymagane do wdrożenia aplikacji serwera.Po skonwertowaniu aplikacji kontenera do aplikacji kontenera/serwera, następnie należy przeprowadzić niektóre te same zadania, dodając kod do kontenera.Na poniższej liście przedstawiono ważne czynniki należy rozważyć:
Kod pojemnika już utworzony za pomocą Kreatora aplikacji inicjuje podsystemu OLE.Nie trzeba będzie zmieniać lub dodawać żadnych opłat za obsługę.
Wszędzie tam, gdzie jest klasa podstawowa klasy dokumentu COleDocument, zmiana klasy podstawowej do COleServerDoc.
Zastąpić COleClientItem::CanActivate Aby uniknąć edycji elementów na miejsce, podczas gdy sam serwer jest używany do edycji w miejscu.
Na przykład, MFC OLE próbki OCLIENT ma osadzony element utworzony przez aplikację kontenera/serwera.Otwórz aplikację OCLIENT i w miejscu edytować element utworzony przez aplikację kontenera/serwera.Podczas edycji elementu aplikacji, zdecydujesz, aby osadzić element utworzony przez próbkę MFC OLE HIERSVR.Aby to zrobić, nie można używać w miejscu aktywacji.Należy otworzyć całkowicie HIERSVR, aby uaktywnić ten przedmiot.Ponieważ biblioteki Microsoft Foundation Class nie obsługuje tej funkcji OLE, zastępując COleClientItem::CanActivate pozwala sprawdzić w takiej sytuacji i zapobiec możliwy błąd w czasie wykonywania w aplikacji.
Jeśli tworzysz nową aplikację i będzie działać jako aplikacja kontenera/serwera, wybierz opcję automatycznie utworzona opcji w oknie dialogowym Opcje OLE w Kreatorze aplikacji i wsparcie to.Aby uzyskać więcej informacji, zobacz artykuł Omówienie: Tworzenie kontenera formantu ActiveX.Informacje dla MFC próbek Zobacz próbek MFC.
Należy zauważyć, że aplikacja MDI nie może wstawić do niego samego.Aplikacja, która jest kontener/server nie można wstawić do tego samego, chyba że jest to aplikacja SDI.
Łącza do obiektów osadzonych
Łącza do obiektów osadzonych funkcja umożliwia użytkownikowi utworzyć dokument z łączem do osadzonego obiektu wewnątrz aplikacji kontenera OLE.Na przykład utworzyć dokument w edytorze tekstu zawierającego osadzony arkusz kalkulacyjny.Jeśli aplikacja obsługuje łącza do obiektów osadzonych, to można wkleić łącze do arkusza kalkulacyjnego, zawarte w dokumencie edytora tekstów.Ta funkcja umożliwia aplikacji do korzystania z informacji zawartych w arkuszu kalkulacyjnym nie wiedząc, gdzie tekstów pierwotnie rację.
Aby utworzyć łącze do obiektów osadzonych w aplikacji
Pochodzić od klasy dokumentu COleLinkingDoc zamiast COleDocument.
Utwórz identyfikator klasy OLE (CLSID) dla aplikacji przy użyciu Generator identyfikatorów klasy dołączone do narzędzi OLE rozwoju.
Zarejestruj aplikacji OLE.
Tworzenie COleTemplateServer obiektu jako członek klasy aplikacji.
W klasie aplikacji InitInstance Członkowskich funkcji, wykonaj następujące czynności:
Połącz z COleTemplateServer obiektu do szablonów dokumentu przez wywołanie obiektu ConnectTemplate funkcji składowej.
Wywołanie COleTemplateServer::RegisterAll funkcji składowej do rejestrowania wszystkich obiektów klasy z systemem OLE.
Call COleTemplateServer::UpdateRegistry.Jedynym parametrem do UpdateRegistry powinien być OAT_CONTAINER Jeśli aplikacji nie jest uruchamiany z przełącznikiem "/ osadzony".Aplikacja to rejestruje jako kontener, który może obsługiwać łącza do obiektów osadzonych.
Jeśli aplikacja jest uruchomiona z przełącznikiem "/ osadzony", nie powinien wykazywać jego główne okno, podobne do aplikacji serwera.
Próbki MFC OLE OCLIENT implementuje tej funkcji.Aby uzyskać przykład tego, jak to zrobić, zobacz InitInstance funkcja w OCLIENT.Plik CPP tej aplikacji przykładowej.