Container: Erweiterte Funktionen

In diesem Artikel werden die Schritte beschrieben, die erforderlich sind, um optionale erweiterte Features in vorhandene Containeranwendungen enthalten soll.Diese Funktionen sind:

  • Eine Anwendung, die ein Container als auch ein Server

  • Ein OLE-Link zu einem eingebetteten Objekt

Eine bin/Server-Anwendung erstellen

Eine bin/Server-Anwendung ist eine Anwendung, die als Container und Server erfolgt.Microsoft Word für Windows ist ein Beispiel dafür.Sie können für Word Windows-Dokumente in anderen Anwendungen einbetten, und Sie können Elemente auch in Word für Windows-Dokumente einbetten.Der Prozess zum Ändern der Containeranwendung, ein Container als auch ein vollständiger Server (Sie können eine Kombination miniserver-Anwendung Container-/) nicht erstellen, sind entspricht dem Prozess zum Erstellen eines vollständigen Servers sehr ähnlich.

Der Artikel Server: Implementieren eines Server werden einige Aufgaben, die zum Erstellen einer Serveranwendung zu implementieren müssen.Wenn Sie eine Containeranwendung für eine bin/Server-Anwendung konvertieren, müssen Sie einige dieser gleichen Aufgaben ausführen, und fügen Sie Code zum Container hinzu.Im Folgenden werden die wichtigen Aufgaben aufgelistet, die Sie beachten sollten:

  • Der Container von Code, der vom Anwendungs-Assistenten erstellt wird, das bereits initialisiert OLE-Subsystem.Sie müssen nichts für diese Unterstützung zu ändern oder hinzuzufügen.

  • Gleichgültig Dabei ist die Basisklasse einer Dokumentklasse COleDocumentCOleServerDoc die Basisklasse zu ändern.

  • Überschreiben Sie COleClientItem::CanActivate, um Elemente bearbeiten zu vermeiden, an der Stelle während der Server selbst verwendet wird, um direkt zu bearbeiten.

    Zum Beispiel verfügt das Beispiel OCLIENT MFC OLE ein Element enthalten, das durch die bin/Server-Anwendung erstellt wird.Öffnen Sie die OCLIENT-Anwendung, und die direkte Bearbeitung, die das Element von der Container/Server-Anwendung erstellt hat.Beim Bearbeiten des Elements Ihrer Anwendung entscheiden Sie, Sie möchten ein Element einbetten, das durch das Beispiel HIERSVR OLE MFC erstellt wird.Hierzu können Sie direkte Aktivierung nicht verwenden.Sie müssen vollständig HIERSVR Öffnen, um das Element zu aktivieren.Da Microsoft Foundation Class Library OLE-Funktion diese nicht unterstützt, können das Überschreiben von COleClientItem::CanActivate Sie zur Überprüfung und diese Situation verhindert einen möglichen Laufzeitfehler in der Anwendung.

Wenn Sie eine neue Anwendung erstellen und sie als Container/Server-Anwendung verwendet werden sollen, aktivieren Sie die Option aus, OLE-Options im Dialogfeld im Anwendungs-Assistenten und dieser Unterstützung automatisch erstellt wird.Weitere Informationen finden Sie im Artikel Übersicht: Erstellen eines ActiveX-Steuerelement-Container.Weitere Informationen über MFC-Beispiele finden Sie unter MFC-Beispiele.

Beachten Sie, dass Sie eine MDI-Anwendung nicht in sich selbst einfügen können.Eine Anwendung, die ein Container/Server ist, kann nicht in sich selbst eingefügt werden, es sei denn, eine SDI-Anwendung ist.

Die Links zur Funktion der eingebetteten Objekte kann ein Benutzer ein Dokument unter einem OLE-Link zu einem eingebetteten Objekts innerhalb der Containeranwendung erstellen.Erstellen Sie z. B. ein Dokument in einem Textverarbeitungsprogramm, das ein eingebettetes Arbeitsblatt enthält.Wenn die Anwendung Halterungsstangen den eingebetteten Objekten, kann sie einen Link zum Arbeitsblatt einfügen, das im Dokument eines Textverarbeitungsprogramms enthalten war.Mit dieser Funktion kann eine Anwendung die Informationen, die im Arbeitsblatt enthalten sind, ohne zu wissen, wo das Textverarbeitungsprogramm sie ursprünglich erhalten hat.

Um den eingebetteten Objekten in der Anwendung beziehen

  1. Ableiten der Dokumentklasse aus COleLinkingDoc anstelle COleDocument.

  2. Erstellen Sie OLE-Klassen-ID (CLSID) für die Anwendung, indem Sie den Klassen-IDen-Generator verwenden, der mit den OLE-Entwicklungswerkzeugen enthalten ist.

  3. Registrieren Sie die Anwendung mit OLE.

  4. Erstellen Sie ein COleTemplateServer-Objekt als Member der Anwendungsklasse.

  5. In InitInstance-Memberfunktion Ihrer Anwendung class gehen Sie wie folgt vor:

    • Schließen Sie das COleTemplateServer-Objekt zu Dokumentvorlagen an, indem Sie die ConnectTemplate-Memberfunktion des Objekts ermitteln.

    • Rufen Sie die COleTemplateServer::RegisterAll-Memberfunktion auf, um alle Klassenobjekte mit dem OLE-System zu registrieren.

    • Rufen Sie COleTemplateServer::UpdateRegistry auf.Der einzige Parameter in UpdateRegistryOAT_CONTAINER sein sollte, wenn die Anwendung nicht mit dem "- /Embedded" Schalter gestartet wird.Dieses registriert die Anwendung als Container, der Halterungsstangen den eingebetteten Objekten kann.

      Wenn die Anwendung mit dem Schalter "- /Embedded" gestartet wird, sollte das Hauptfenster nicht anzeigen, die einer Serveranwendung ähnelt.

Im Beispiel OCLIENT OLE MFC implementiert diese Funktion.Ein Beispiel dafür, wie dies durchgeführt wird, finden Sie in der InitInstance-Funktion in der OCLIENT.CPP-Datei dieser Beispielanwendung.

Siehe auch

Konzepte

Container

Server