Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 CDocItemabgeleitete 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 CWinAppabgeleiteten Klasse eine Dokumentvorlage, und geben Sie die COleLinkingDocabgeleitete 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 CWinAppfür abgeleitete Klassendefinition und InitInstance -funktion finden Sie unter OCLIENT. H und OCLIENT. CPP im MFC-Beispiel-OCLIENT.
Weitere Informationen zur Verwendung COleLinkingDocfinden 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 COleLinkingDocdie Implementierung von OnNewDocument, OnOpenDocumentund 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 COleLinkingDocdie Implementierung von OnCloseDocument, , OnNewDocument, OnOpenDocumentund OnSaveDocument.
Siehe auch
MFC-Beispiel-OCLIENT
COleDocument-Klasse
Hierarchiediagramm
CDocTemplate-Klasse