COleLinkingDoc-Klasse
Die Basisklasse für OLE-Containerdokumente, die das Verknüpfen mit den enthaltenen eingebetteten Elementen unterstützt.
Syntax
class COleLinkingDoc : public COleDocument
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
COleLinkingDoc::COleLinkingDoc | Erstellt ein COleLinkingDoc -Objekt. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
COleLinkingDoc::Register | Registriert das Dokument mit den OLE-System-DLLs. |
COleLinkingDoc::Revoke | Widerruft die Registrierung des Dokuments. |
Geschützte Methoden
Name | Beschreibung |
---|---|
COleLinkingDoc::OnFindEmbeddedItem | Sucht das angegebene eingebettete Element. |
COleLinkingDoc::OnGetLinkedItem | Sucht das angegebene verknüpfte Element. |
Hinweise
Eine Containeranwendung, die das Verknüpfen mit eingebetteten Elementen unterstützt, wird als "Linkcontainer" bezeichnet. Die OCLIENT-Beispielanwendung ist ein Beispiel für einen Linkcontainer.
Wenn es sich bei der Quelle eines verknüpften Elements um ein eingebettetes Element in einem anderen Dokument handelt, muss dieses Dokument geladen werden, damit das eingebettete Element bearbeitet werden kann. Aus diesem Grund muss ein Linkcontainer von einer anderen Containeranwendung gestartet werden können, wenn der Benutzer die Quelle eines verknüpften Elements bearbeiten möchte. Ihre Anwendung muss auch die COleTemplateServer-Klasse verwenden, damit dokumente beim programmgesteuerten Start erstellt werden können.
Um den Container zu einem Linkcontainer zu machen, leiten Sie Ihre Dokumentklasse von "COleDocument" ab.COleLinkingDoc
Wie bei jedem anderen OLE-Container müssen Sie Ihre Klasse zum Speichern der systemeigenen Daten der Anwendung sowie für eingebettete oder verknüpfte Elemente entwerfen. Außerdem müssen Sie Datenstrukturen zum Speichern ihrer systemeigenen Daten entwerfen. Wenn Sie eine CDocItem
abgeleitete Klasse für die systemeigenen Daten Ihrer Anwendung definieren, können Sie die Schnittstelle verwenden, die durch COleDocument
das Speichern ihrer systemeigenen Daten sowie Ihrer OLE-Daten definiert wird.
Um zuzulassen, dass Ihre Anwendung programmgesteuert von einem anderen Container gestartet wird, deklarieren Sie ein COleTemplateServer
Objekt als Mitglied der abgeleiteten Klasse Ihrer Anwendung CWinApp
:
class COleContainerApp : public CWinApp
{
protected:
COleTemplateServer m_server;
// remainder of class declaration omitted
Erstellen Sie in der InitInstance
Memberfunktion der CWinApp
abgeleiteten Klasse eine Dokumentvorlage, und geben Sie die COleLinkingDoc
abgeleitete Klasse als Dokumentklasse an:
// CMyLinkDoc is derived from COleLinkingDoc
CMultiDocTemplate* pDocTemplate = new CMultiDocTemplate(IDR_LINKDOCTYPE,
RUNTIME_CLASS(CMyLinkDoc),
RUNTIME_CLASS(CChildFrame),
RUNTIME_CLASS(CMyLinkView));
if (!pDocTemplate)
return FALSE;
pDocTemplate->SetContainerInfo(IDR_OLECONTTYPE_CNTR_IP);
AddDocTemplate(pDocTemplate);
Verbinden Sie Ihr COleTemplateServer
Objekt mit Ihren Dokumentvorlagen, indem Sie die Memberfunktion des ConnectTemplate
Objekts aufrufen und alle Klassenobjekte mit dem OLE-System registrieren, indem Sie Folgendes aufrufen COleTemplateServer::RegisterAll
:
m_server.ConnectTemplate(clsid, pDocTemplate, FALSE);
COleTemplateServer::RegisterAll();
Ein Beispiel CWinApp
für abgeleitete Klassendefinition und InitInstance
-funktion finden Sie unter OCLIENT. H und OCLIENT. CPP im MFC-Beispiel-OCLIENT.
Weitere Informationen zur Verwendung COleLinkingDoc
finden Sie in den Artikeln Container: Implementieren eines Containers und Containers: Erweiterte Features.
Vererbungshierarchie
COleLinkingDoc
Anforderungen
Kopfzeile: afxole.h
COleLinkingDoc::COleLinkingDoc
Erstellt ein COleLinkingDoc
Objekt, ohne mit der Kommunikation mit den OLE-System-DLLs zu beginnen.
COleLinkingDoc();
Hinweise
Sie müssen die Register
Memberfunktion aufrufen, um OLE darüber zu informieren, dass das Dokument geöffnet ist.
COleLinkingDoc::OnFindEmbeddedItem
Wird vom Framework aufgerufen, um zu bestimmen, ob das Dokument ein eingebettetes OLE-Element mit dem angegebenen Namen enthält.
virtual COleClientItem* OnFindEmbeddedItem(LPCTSTR lpszItemName);
Parameter
lpszItemName
Zeiger auf den Namen des angeforderten eingebetteten OLE-Elements.
Rückgabewert
Ein Zeiger auf das angegebene Element; NULL, wenn das Element nicht gefunden wird.
Hinweise
Die Standardimplementierung durchsucht die Liste der eingebetteten Elemente für ein Element mit dem angegebenen Namen (bei dem Namensvergleich wird die Groß-/Kleinschreibung beachtet). Überschreiben Sie diese Funktion, wenn Sie über eine eigene Methode zum Speichern oder Benennen eingebetteter OLE-Elemente verfügen.
COleLinkingDoc::OnGetLinkedItem
Wird vom Framework aufgerufen, um zu überprüfen, ob das Dokument ein verknüpftes Serverelement mit dem angegebenen Namen enthält.
virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);
Parameter
lpszItemName
Zeigen Sie auf den Namen des verknüpften OLE-Elements, das angefordert wurde.
Rückgabewert
Ein Zeiger auf das angegebene Element; NULL, wenn das Element nicht gefunden wird.
Hinweise
Die Standardimplementierung COleLinkingDoc
gibt immer NULL zurück. Diese Funktion wird in der abgeleiteten Klasse COleServerDoc
außer Kraft gesetzt, um die Liste der OLE-Serverelemente nach einem verknüpften Element mit dem angegebenen Namen zu durchsuchen (bei dem Namensvergleich wird die Groß-/Kleinschreibung beachtet). Überschreiben Sie diese Funktion, wenn Sie ihre eigene Methode zum Speichern oder Abrufen verknüpfter Serverelemente implementiert haben.
COleLinkingDoc::Register
Informiert die OLE-System-DLLs, dass das Dokument geöffnet ist.
BOOL Register(
COleObjectFactory* pFactory,
LPCTSTR lpszPathName);
Parameter
pFactory
Zeiger auf ein OLE-Factoryobjekt (kann NULL sein).
lpszPathName
Zeigen Sie auf den vollqualifizierten Pfad des Containerdokuments.
Rückgabewert
Nonzero, wenn das Dokument erfolgreich registriert wurde; andernfalls 0.
Hinweise
Rufen Sie diese Funktion beim Erstellen oder Öffnen einer benannten Datei auf, um das Dokument bei den OLE-System-DLLs zu registrieren. Diese Funktion muss nicht aufgerufen werden, wenn das Dokument ein eingebettetes Element darstellt.
Wenn Sie in Ihrer Anwendung arbeiten COleTemplateServer
, Register
wird sie durch COleLinkingDoc
die Implementierung von OnNewDocument
, OnOpenDocument
und OnSaveDocument
.
COleLinkingDoc::Revoke
Informiert die OLE-System-DLLs, dass das Dokument nicht mehr geöffnet ist.
void Revoke();
Hinweise
Rufen Sie diese Funktion auf, um die Registrierung des Dokuments mit den OLE-System-DLLs zu widerrufen.
Sie sollten diese Funktion aufrufen, wenn Sie eine benannte Datei schließen, sie aber in der Regel nicht direkt aufrufen müssen. Revoke
wird für Sie durch COleLinkingDoc
die Implementierung von OnCloseDocument
, , OnNewDocument
, OnOpenDocument
und OnSaveDocument
.
Siehe auch
MFC-Beispiel-OCLIENT
COleDocument-Klasse
Hierarchiediagramm
CDocTemplate-Klasse