Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano kroki niezbędne do uwzględnienia opcjonalnych zaawansowanych funkcji w istniejących aplikacjach kontenerów. Są to następujące funkcje:
Tworzenie kontenera/aplikacji serwera
Aplikacja kontenera/serwera to aplikacja, która działa zarówno jako kontener, jak i serwer. Przykładem jest program Microsoft Word dla systemu Windows. Możesz osadzić dokumenty programu Word dla systemu Windows w innych aplikacjach, a także osadzić elementy w dokumentach programu Word for Windows. Proces modyfikowania aplikacji kontenera jako kontenera i pełnego serwera (nie można utworzyć złożonej aplikacji kontenera/miniserwera) jest podobny do procesu tworzenia pełnego serwera.
Artykuł Serwery: Implementowanie serwera zawiera listę wielu zadań wymaganych do zaimplementowania aplikacji serwera. Jeśli przekonwertujesz aplikację kontenera na aplikację kontenera/serwera, musisz wykonać niektóre z tych samych zadań, dodając kod do kontenera. Poniżej wymieniono ważne kwestie, które należy wziąć pod uwagę:
Kod kontenera utworzony przez kreatora aplikacji już inicjuje podsystem OLE. Nie musisz zmieniać ani dodawać żadnych elementów dla tego wsparcia.
Wszędzie tam, gdzie klasa bazowa klasy dokumentów to
COleDocument, zmień klasę bazową naCOleServerDoc.Zastąpij
COleClientItem::CanActivate, aby uniknąć edytowania elementów w miejscu, gdy sam serwer jest używany do edycji.Na przykład przykładowy obiekt OCLIENT MFC OLE zawiera osadzony element utworzony przez aplikację kontenera/serwera. Otwierasz aplikację OCLIENT i bezpośrednio edytujesz element utworzony przez aplikację kontenera/serwera. Podczas edytowania elementu aplikacji decydujesz, że chcesz osadzić element utworzony przez przykładowy interfejs HIERSVR MFC OLE. W tym celu nie można użyć aktywacji w miejscu. Aby aktywować ten element, musisz w pełni otworzyć aplikację HIERSVR. Ponieważ biblioteka klas programu Microsoft Foundation nie obsługuje tej funkcji OLE, zastąpienie
COleClientItem::CanActivatepozwala sprawdzić tę sytuację i zapobiec ewentualnemu błędowi czasu wykonywania w aplikacji.
Jeśli tworzysz nową aplikację i chcesz, aby działała jako aplikacja kontenera/serwera, wybierz tę opcję w oknie dialogowym Opcje OLE w kreatorze aplikacji i ta obsługa zostanie utworzona automatycznie. Aby uzyskać więcej informacji, zobacz artykuł Omówienie: tworzenie kontenera kontrolek ActiveX. Aby uzyskać informacje na temat przykładów MFC, zobacz Przykłady MFC.
Należy pamiętać, że nie można wstawić aplikacji MDI do swojej struktury. Nie można wstawić aplikacji, która jest kontenerem/serwerem, chyba że jest to aplikacja SDI.
Łącza do obiektów osadzonych
Funkcja Łącza do obiektów osadzonych umożliwia użytkownikowi utworzenie dokumentu z linkiem OLE do obiektu osadzonego wewnątrz aplikacji kontenera. Na przykład utwórz dokument w procesorze tekstów zawierającym osadzony arkusz kalkulacyjny. Jeśli aplikacja obsługuje linki do obiektów osadzonych, może wkleić link do arkusza kalkulacyjnego zawartego w dokumencie procesora tekstów. Ta funkcja umożliwia aplikacji korzystanie z informacji zawartych w arkuszu kalkulacyjnym bez wiedzy o źródle, z którego procesor tekstu pierwotnie uzyskał te informacje.
Połącz się z obiektami osadzonymi w aplikacji.
Pochodź klasę dokumentu od
COleLinkingDoczamiast odCOleDocument.Utwórz identyfikator klasy OLE (CLSID) dla aplikacji przy użyciu generatora identyfikatorów klas dołączonych do narzędzi programowania OLE.
Zarejestruj aplikację przy użyciu interfejsu OLE.
COleTemplateServerUtwórz obiekt jako element członkowski klasy aplikacji.W funkcji składowej
InitInstanceklasy aplikacji wykonaj następujące czynności:Połącz swój
COleTemplateServerobiekt z szablonami dokumentów, wywołując funkcję składowąConnectTemplateobiektu.Wywołaj funkcję składową
COleTemplateServer::RegisterAll, aby zarejestrować wszystkie obiekty klasy w systemie OLE.Zadzwoń do
COleTemplateServer::UpdateRegistry. Jedynym parametrem dlaUpdateRegistrypowinien być OAT_CONTAINER, jeśli aplikacja nie jest uruchamiana z przełącznikiem "/Embedded". Spowoduje to zarejestrowanie aplikacji jako kontenera, który może obsługiwać linki do obiektów osadzonych.Jeśli aplikacja jest uruchamiana z przełącznikiem "/Embedded", nie powinna wyświetlać głównego okna, podobnie jak w przypadku aplikacji serwera.
Przykładowy obiekt OCLIENT MFC OLE implementuje tę funkcję. Aby zapoznać się z przykładem, jak to zrobić, zobacz funkcję InitInstance w pliku OCLIENT.CPP tej przykładowej aplikacji.