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 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

CObject

CCmdTarget

CDocument

COleDocument

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