Container: Implementieren eines Containers
In diesem Artikel wird das Verfahren für die Implementierung eines Containers zusammengefasst und sie auf andere Artikel mit ausführlicheren Erläuterungen zur Implementierung von Containern verweist. Außerdem werden einige optionale OLE-Features aufgeführt, die Sie implementieren möchten, und die Artikel, die diese Features beschreiben.
So bereiten Sie Ihre von CWinApp abgeleitete Klasse vor
Initialisieren Sie die OLE-Bibliotheken, indem Sie die
InitInstance
Memberfunktion aufrufenAfxOleInit
.InitInstance
Rufen Sie aufCDocTemplate::SetContainerInfo
, um die Menü- und Zugriffstastenressourcen zuzuweisen, die beim Aktivieren eines eingebetteten Elements verwendet werden. Weitere Informationen zu diesem Thema finden Sie unter "Aktivierung".
Diese Features werden automatisch bereitgestellt, wenn Sie den MFC-Anwendungs-Assistenten zum Erstellen einer Containeranwendung verwenden. Siehe Erstellen eines MFC EXE-Programms.
So bereiten Sie Ihre Ansichtsklasse vor
Verfolgen Sie ausgewählte Elemente Standard, indem Sie einen Zeiger oder eine Liste von Zeigern beibehalten, wenn Sie eine Mehrfachauswahl unterstützen, auf die ausgewählten Elemente. Ihre
OnDraw
Funktion muss alle OLE-Elemente zeichnen.Überschreiben
IsSelected
, um zu überprüfen, ob das element, an das es übergeben wurde, zurzeit ausgewählt ist.Implementieren Sie einen
OnInsertObject
Meldungshandler, um das Dialogfeld "Objekt einfügen" anzuzeigen.Implementieren Sie einen
OnSetFocus
Nachrichtenhandler, um den Fokus von der Ansicht auf ein aktives eingebettetes OLE-Element zu übertragen.Implementieren Sie einen
OnSize
Nachrichtenhandler, um ein eingebettetes OLE-Element darüber zu informieren, dass es sein Rechteck ändern muss, um die Änderung der Größe der enthaltenden Ansicht widerzuspiegeln.
Da die Implementierung dieser Features erheblich von einer Anwendung zur nächsten variiert, bietet der Anwendungs-Assistent nur eine einfache Implementierung. Sie müssen diese Funktionen wahrscheinlich anpassen, damit Ihre Anwendung ordnungsgemäß funktioniert. Ein Beispiel hierfür finden Sie im CONTAINER-Beispiel .
So behandeln Sie eingebettete und verknüpfte Elemente
Leiten Sie eine Klasse von COleClientItem ab. Objekte dieser Klasse stellen Elemente dar, die in Ihr OLE-Dokument eingebettet oder verknüpft wurden.
Überschreiben
OnChange
,OnChangeItemPosition
undOnGetItemPosition
. Diese Funktionen behandeln Größenanpassung, Positionierung und Ändern eingebetteter und verknüpfter Elemente.
Der Anwendungs-Assistent leitet die Klasse für Sie ab, aber Sie müssen wahrscheinlich überschreiben OnChange
und die anderen Funktionen, die in Schritt 2 im vorherigen Verfahren aufgeführt sind. Die Skelettimplementierungen müssen für die meisten Anwendungen angepasst werden, da diese Funktionen von einer Anwendung zur nächsten anders implementiert werden. Beispiele hierfür finden Sie in den MFC-Beispielen DRAWCLI und CONTAINER.
Sie müssen der Menüstruktur der Containeranwendung eine Reihe von Elementen hinzufügen, um OLE zu unterstützen. Weitere Informationen hierzu finden Sie unter Menüs und Ressourcen: Containerzufügungen.
Möglicherweise möchten Sie auch einige der folgenden Features in Ihrer Containeranwendung unterstützen:
Direkte Aktivierung beim Bearbeiten eines eingebetteten Elements.
Weitere Informationen finden Sie unter Aktivierung.
Erstellen von OLE-Elementen durch Ziehen und Ablegen einer Auswahl aus einer Serveranwendung.
Weitere Informationen finden Sie unter OLE-Ziehen und Ablegen.
Links zu eingebetteten Objekten oder Kombinationscontainer-/Serveranwendungen.
Weitere Informationen finden Sie unter Container: Erweiterte Features.