Teilen über


COleDocument-Klasse

Die Basisklasse für OLE-Dokumente, die visuelle Bearbeitung unterstützen.

Syntax

class COleDocument : public CDocument

Member

Öffentliche Konstruktoren

Name Beschreibung
COleDocument::COleDocument Erstellt ein COleDocument-Objekt.

Öffentliche Methoden

Name Beschreibung
COleDocument::AddItem Fügt der Liste der vom Dokument verwalteten Elemente ein Element hinzu.
COleDocument::ApplyPrintDevice Legt das Druckzielgerät für alle Clientelemente im Dokument fest.
COleDocument::EnableCompoundFile Bewirkt, dass Dokumente mithilfe des OLE Structured Storage-Dateiformats gespeichert werden.
COleDocument::GetInPlaceActiveItem Gibt das OLE-Element zurück, das derzeit aktiv ist.
COleDocument::GetNextClientItem Ruft das nächste Clientelement zum Durchlaufen ab.
COleDocument::GetNextItem Ruft das nächste Dokumentelement zum Durchlaufen ab.
COleDocument::GetNextServerItem Ruft das nächste Serverelement zum Durchlaufen ab.
COleDocument::GetPrimarySelectedItem Gibt das primäre ausgewählte OLE-Element im Dokument zurück.
COleDocument::GetStartPosition Ruft die Anfangsposition ab, um die Iteration zu beginnen.
COleDocument::HasBlankItems Sucht nach leeren Elementen im Dokument.
COleDocument::OnShowViews Wird aufgerufen, wenn das Dokument sichtbar oder unsichtbar wird.
COleDocument::RemoveItem Entfernt ein Element aus der Liste der vom Dokument verwalteten Elemente.
COleDocument::UpdateModifiedFlag Kennzeichnet das Dokument als geändert, wenn eines der enthaltenen OLE-Elemente geändert wurde.

Geschützte Methoden

Name Beschreibung
COleDocument::OnEditChangeIcon Behandelt Ereignisse im Menübefehl "Symbol ändern".
COleDocument::OnEditConvert Behandelt die Konvertierung eines eingebetteten oder verknüpften Objekts von einem Typ in einen anderen.
COleDocument::OnEditLinks Behandelt Ereignisse im Befehl "Links" im Menü "Bearbeiten".
COleDocument::OnFileSendMail Sendet eine E-Mail-Nachricht mit dem angefügten Dokument.
COleDocument::OnUpdateEditChangeIcon Wird vom Framework aufgerufen, um die Befehlsbenutzeroberfläche für die Menüoption "Symbol bearbeiten/ändern" zu aktualisieren.
COleDocument::OnUpdateEditLinksMenu Wird vom Framework aufgerufen, um die Befehlsbenutzeroberfläche für die Menüoption "Bearbeiten/Links" zu aktualisieren.
COleDocument::OnUpdateObjectVerbMenu Wird vom Framework aufgerufen, um die Befehlsbenutzeroberfläche für die Menüoption "Edit/ ObjectName " und das Untermenü "Verb" zu aktualisieren, auf das über "Edit/ ObjectName" zugegriffen wird.
COleDocument::OnUpdatePasteLinkMenu Vom Framework aufgerufen, um die Befehlsbenutzeroberfläche für die Menüoption "Inhalte einfügen" zu aktualisieren.
COleDocument::OnUpdatePasteMenu Wird vom Framework aufgerufen, um die Befehlsbenutzeroberfläche für die Menüoption "Einfügen" zu aktualisieren.

Hinweise

COleDocument abgeleitet von CDocument, wodurch Ihre OLE-Anwendungen die von der Microsoft Foundation Class Library bereitgestellte Dokument-/Ansichtsarchitektur verwenden können.

COleDocumentbehandelt ein Dokument als Auflistung von CDocItem-Objekten zum Behandeln von OLE-Elementen. Container- und Serveranwendungen erfordern eine solche Architektur, da ihre Dokumente OLE-Elemente enthalten müssen. Die Von beiden abgeleiteten CDocItemKlassen COleServerItem und COleClientItem verwalten die Interaktionen zwischen Anwendungen und OLE-Elementen.

Wenn Sie eine einfache Containeranwendung schreiben, leiten Sie Ihre Dokumentklasse von COleDocument. Wenn Sie eine Containeranwendung schreiben, die das Verknüpfen mit den eingebetteten Elementen unterstützt, die in ihren Dokumenten enthalten sind, leiten Sie Ihre Dokumentklasse von COleLinkingDoc ab. Wenn Sie eine Serveranwendung oder kombinationscontainer/server schreiben, leiten Sie Ihre Dokumentklasse von COleServerDoc ab. COleLinkingDoc und COleServerDoc werden von COleDocumentabgeleitet, sodass diese Klassen alle dienste erben, die in COleDocument und CDocument.

Um eine Klasse zu verwenden COleDocument, leiten Sie eine Klasse daraus ab und fügen Sie Funktionen zum Verwalten der Nicht-OLE-Daten der Anwendung sowie eingebettete oder verknüpfte Elemente hinzu. Wenn Sie abgeleitete Klassen definieren CDocItem, um die systemeigenen Daten der Anwendung zu speichern, können Sie die Standardimplementierung verwenden, die definiert wird COleDocument , um sowohl Ihre OLE- als auch Nicht-OLE-Daten zu speichern. Sie können auch eigene Datenstrukturen entwerfen, um Ihre Nicht-OLE-Daten separat von den OLE-Elementen zu speichern. Weitere Informationen finden Sie im Artikel Container: Verbunddateien..

CDocument unterstützt das Senden Ihres Dokuments per E-Mail, wenn der E-Mail-Support (MAPI) vorhanden ist. COleDocumenthat OnFileSendMail aktualisiert, um zusammengesetzte Dokumente korrekt zu verarbeiten. Weitere Informationen finden Sie in den Artikeln MAPI - und MAPI-Support in MFC..

Vererbungshierarchie

CObject

CCmdTarget

CDocument

COleDocument

Anforderungen

Kopfzeile: afxole.h

COleDocument::AddItem

Rufen Sie diese Funktion auf, um dem Dokument ein Element hinzuzufügen.

virtual void AddItem(CDocItem* pItem);

Parameter

pItem
Zeiger auf das Dokumentelement, das hinzugefügt wird.

Hinweise

Sie müssen diese Funktion nicht explizit aufrufen, wenn sie vom Konstruktor aufgerufen wird, der COleClientItem COleServerItem einen Zeiger auf ein Dokument akzeptiert.

COleDocument::ApplyPrintDevice

Rufen Sie diese Funktion auf, um das Druckzielgerät für alle eingebetteten COleClientItem-Elemente im Containerdokument Ihrer Anwendung zu ändern.

BOOL ApplyPrintDevice(const DVTARGETDEVICE* ptd);
BOOL ApplyPrintDevice(const PRINTDLG* ppd);

Parameter

Ptd
Zeigen Sie auf eine DVTARGETDEVICE Datenstruktur, die Informationen zum neuen Druckzielgerät enthält. Kann den Wert NULL haben.

ppd
Zeigen Sie auf eine PRINTDLG Datenstruktur, die Informationen zum neuen Druckzielgerät enthält. Kann den Wert NULL haben.

Rückgabewert

Nonzero, wenn die Funktion erfolgreich war; andernfalls 0.

Hinweise

Diese Funktion aktualisiert das Druckzielgerät für alle Elemente, aktualisiert jedoch nicht den Präsentationscache für diese Elemente. Rufen Sie zum Aktualisieren des Präsentationscaches für ein Element COleClientItem::UpdateLink auf.

Die Argumente für diese Funktion enthalten Informationen, die OLE zum Identifizieren des Zielgeräts verwendet. Die PRINTDLG-Struktur enthält Informationen, die Windows zum Initialisieren des allgemeinen Dialogfelds "Drucken" verwendet. Nachdem der Benutzer das Dialogfeld geschlossen hat, gibt Windows Informationen über die Auswahl des Benutzers in dieser Struktur zurück. Das m_pd Element eines CPrintDialog-Objekts ist eine PRINTDLG Struktur.

Weitere Informationen finden Sie in der PRINTDLG-Struktur im Windows SDK.

Weitere Informationen finden Sie in der DVTARGETDEVICE-Struktur im Windows SDK.

COleDocument::COleDocument

Erstellt ein COleDocument-Objekt.

COleDocument();

COleDocument::EnableCompoundFile

Rufen Sie diese Funktion auf, wenn Sie das Dokument mithilfe des Verbunddateiformats speichern möchten.

void EnableCompoundFile(BOOL bEnable = TRUE);

Parameter

bEnable
Gibt an, ob die Verbunddateiunterstützung aktiviert oder deaktiviert ist.

Hinweise

Dies wird auch als strukturierter Speicher bezeichnet. In der Regel rufen Sie diese Funktion aus dem Konstruktor Ihrer COleDocumentabgeleiteten Klasse auf. Weitere Informationen zu zusammengesetzten Dokumenten finden Sie im Artikel Container: Verbunddateien..

Wenn Sie diese Memberfunktion nicht aufrufen, werden Dokumente in einem nicht strukturierten ("flachen") Dateiformat gespeichert.

Nachdem die Unterstützung für zusammengesetzte Dateien für ein Dokument aktiviert oder deaktiviert wurde, sollte die Einstellung während der Lebensdauer des Dokuments nicht mehr geändert werden.

COleDocument::GetInPlaceActiveItem

Rufen Sie diese Funktion auf, um das OLE-Element abzurufen, das derzeit im Framefenster aktiviert ist, das die von pWnd identifizierte Ansicht enthält.

virtual COleClientItem* GetInPlaceActiveItem(CWnd* pWnd);

Parameter

pWnd
Zeigen Sie auf das Fenster, in dem das Containerdokument angezeigt wird.

Rückgabewert

Ein Zeiger auf das einzelne, direkte aktive OLE-Element; NULL, wenn sich derzeit kein OLE-Element im Status "In-place active" befindet.

COleDocument::GetNextClientItem

Rufen Sie diese Funktion wiederholt auf, um auf die einzelnen Clientelemente in Ihrem Dokument zuzugreifen.

COleClientItem* GetNextClientItem(POSITION& pos) const;

Parameter

pos
Ein Verweis auf einen POSITION-Wert, der durch einen vorherigen Aufruf GetNextClientItemfestgelegt wurde; der Anfangswert wird von der GetStartPosition Memberfunktion zurückgegeben.

Rückgabewert

Ein Zeiger auf das nächste Clientelement im Dokument oder NULL, wenn keine Clientelemente mehr vorhanden sind.

Hinweise

Nach jedem Aufruf wird der Pos-Wert für das nächste Element im Dokument festgelegt, das möglicherweise ein Clientelement ist.

Beispiel

// pDoc points to a COleDocument object
POSITION pos = pDoc->GetStartPosition();
COleClientItem* pItem;
CString strType;
while ((pItem = pDoc->GetNextClientItem(pos)) != NULL)
{
   // Use pItem
   pItem->GetUserType(USERCLASSTYPE_FULL, strType);
   TRACE(strType);
}

COleDocument::GetNextItem

Rufen Sie diese Funktion wiederholt auf, um auf die einzelnen Elemente in Ihrem Dokument zuzugreifen.

virtual CDocItem* GetNextItem(POSITION& pos) const;

Parameter

pos
Ein Verweis auf einen POSITION-Wert, der durch einen vorherigen Aufruf GetNextItemfestgelegt wurde; der Anfangswert wird von der GetStartPosition Memberfunktion zurückgegeben.

Rückgabewert

Ein Zeiger auf das Dokumentelement an der angegebenen Position.

Hinweise

Nach jedem Aufruf wird der Pos-Wert auf den POSITION-Wert des nächsten Elements im Dokument festgelegt. Wenn das abgerufene Element das letzte Element im Dokument ist, ist der neue Wert von Pos NULL.

Beispiel

// pDoc points to a COleDocument object
POSITION pos = pDoc->GetStartPosition();
CDocItem* pItem;
CString strType;
while (pos != NULL)
{
   pItem = pDoc->GetNextItem(pos);
   // Use pItem
   if (pItem->IsKindOf(RUNTIME_CLASS(COleClientItem)))
   {
      ((COleClientItem*)pItem)->GetUserType(USERCLASSTYPE_FULL, strType);
      TRACE(strType);
   }
}

COleDocument::GetNextServerItem

Rufen Sie diese Funktion wiederholt auf, um auf die einzelnen Serverelemente in Ihrem Dokument zuzugreifen.

COleServerItem* GetNextServerItem(POSITION& pos) const;

Parameter

pos
Ein Verweis auf einen POSITION-Wert, der durch einen vorherigen Aufruf GetNextServerItemfestgelegt wurde; der Anfangswert wird von der GetStartPosition Memberfunktion zurückgegeben.

Rückgabewert

Ein Zeiger auf das nächste Serverelement im Dokument oder NULL, wenn keine Serverelemente mehr vorhanden sind.

Hinweise

Nach jedem Aufruf wird der Pos-Wert für das nächste Element im Dokument festgelegt, das möglicherweise ein Serverelement ist.

Beispiel

// pDoc points to a COleDocument object
POSITION pos = pDoc->GetStartPosition();
COleServerItem* pItem;
while ((pItem = pDoc->GetNextServerItem(pos)) != NULL)
{
   // Use pItem
}

COleDocument::GetPrimarySelectedItem

Vom Framework aufgerufen, um das aktuell ausgewählte OLE-Element in der angegebenen Ansicht abzurufen.

virtual COleClientItem* GetPrimarySelectedItem(CView* pView);

Parameter

pView
Zeigen Sie auf das aktive Ansichtsobjekt, das das Dokument anzeigt.

Rückgabewert

Ein Zeiger auf das einzelne, ausgewählte OLE-Element; NULL, wenn keine OLE-Elemente ausgewählt sind oder mehrere elemente ausgewählt sind.

Hinweise

Die Standardimplementierung durchsucht die Liste der enthaltenen OLE-Elemente für ein einzelnes ausgewähltes Element und gibt einen Zeiger darauf zurück. Wenn kein Element ausgewählt ist oder mehrere Elemente ausgewählt sind, gibt die Funktion NULL zurück. Sie müssen die CView::IsSelected Memberfunktion in Ihrer Ansichtsklasse außer Kraft setzen, damit diese Funktion funktioniert. Überschreiben Sie diese Funktion, wenn Sie über eine eigene Methode zum Speichern von enthaltenen OLE-Elementen verfügen.

COleDocument::GetStartPosition

Rufen Sie diese Funktion auf, um die Position des ersten Elements im Dokument abzurufen.

virtual POSITION GetStartPosition() const;

Rückgabewert

Ein POSITION-Wert, der zum Durchlaufen der Elemente des Dokuments verwendet werden kann; NULL, wenn das Dokument keine Elemente enthält.

Hinweise

Übergeben Sie den wert, der an GetNextItem, GetNextClientItem, oder GetNextServerItem.

COleDocument::HasBlankItems

Rufen Sie diese Funktion auf, um zu bestimmen, ob das Dokument leere Elemente enthält.

BOOL HasBlankItems() const;

Rückgabewert

Nonzero, wenn das Dokument leere Elemente enthält; andernfalls 0.

Hinweise

Ein leeres Element ist ein Element, dessen Rechteck leer ist.

COleDocument::OnEditChangeIcon

Zeigt das Dialogfeld OLE-Änderungssymbol an und ändert das Symbol, das das aktuell ausgewählte OLE-Element auf das Symbol darstellt, das der Benutzer im Dialogfeld auswählt.

afx_msg void OnEditChangeIcon();

Hinweise

OnEditChangeIcon erstellt und startet ein COleChangeIconDialog Dialogfeld "Symbol ändern".

COleDocument::OnEditConvert

Zeigt das Dialogfeld "OLE-Konvertierung" an und konvertiert oder aktiviert das aktuell ausgewählte OLE-Element entsprechend den Benutzerauswahlen im Dialogfeld.

afx_msg void OnEditConvert();

Hinweise

OnEditConvert erstellt und startet ein COleConvertDialog Dialogfeld "Konvertieren".

Ein Beispiel für die Konvertierung ist das Konvertieren eines Microsoft Word-Dokuments in ein WordPad-Dokument.

Zeigt das Dialogfeld OLE-Bearbeitung/Verknüpfungen an.

afx_msg void OnEditLinks();

Hinweise

OnEditLinks erstellt und startet ein COleLinksDialog Dialogfeld "Verknüpfungen", in dem der Benutzer die verknüpften Objekte ändern kann.

COleDocument::OnFileSendMail

Sendet eine Nachricht über den residenten E-Mail-Host (falls vorhanden) mit dem Dokument als Anlage.

afx_msg void OnFileSendMail();

Hinweise

OnFileSendMail Aufrufe OnSaveDocument zum Serialisieren (Speichern) unbenannter und geänderter Dokumente in eine temporäre Datei, die dann per E-Mail gesendet wird. Wenn das Dokument nicht geändert wurde, ist keine temporäre Datei erforderlich; das Original wird gesendet. OnFileSendMail lädt MAPI32.DLL, wenn sie noch nicht geladen wurde.

Im Gegensatz zur Implementierung von OnFileSendMail for CDocumentverarbeitet diese Funktion zusammengesetzte Dateien ordnungsgemäß.

Weitere Informationen finden Sie in den MFC-Artikeln unter MAPI Topics und MAPI Support.For more information, see the MAPI Topics and MAPI Support in MFC articles..

COleDocument::OnShowViews

Das Framework ruft diese Funktion auf, nachdem sich der Sichtbarkeitsstatus des Dokuments geändert hat.

virtual void OnShowViews(BOOL bVisible);

Parameter

bVisible
Gibt an, ob das Dokument sichtbar oder unsichtbar geworden ist.

Hinweise

Die Standardversion dieser Funktion führt nichts aus. Überschreiben Sie sie, wenn ihre Anwendung eine spezielle Verarbeitung ausführen muss, wenn sich die Sichtbarkeit des Dokuments ändert.

COleDocument::OnUpdateEditChangeIcon

Wird vom Framework aufgerufen, um den Befehl "Symbol ändern" im Menü "Bearbeiten" zu aktualisieren.

afx_msg void OnUpdateEditChangeIcon(CCmdUI* pCmdUI);

Parameter

pCmdUI
Ein Zeiger auf eine CCmdUI Struktur, die das Menü darstellt, das den Updatebefehl generiert hat. Der Updatehandler ruft die Enable Memberfunktion der CCmdUI Struktur über pCmdUI auf, um die Benutzeroberfläche zu aktualisieren.

Hinweise

OnUpdateEditChangeIcon aktualisiert die Benutzeroberfläche des Befehls, je nachdem, ob im Dokument ein gültiges Symbol vorhanden ist oder nicht. Überschreiben Sie diese Funktion, um das Verhalten zu ändern.

COleDocument::OnUpdateEditLinksMenu

Wird vom Framework aufgerufen, um den Befehl "Links" im Menü "Bearbeiten" zu aktualisieren.

afx_msg void OnUpdateEditLinksMenu(CCmdUI* pCmdUI);

Parameter

pCmdUI
Ein Zeiger auf eine CCmdUI Struktur, die das Menü darstellt, das den Updatebefehl generiert hat. Der Updatehandler ruft die Enable Memberfunktion der CCmdUI Struktur über pCmdUI auf, um die Benutzeroberfläche zu aktualisieren.

Hinweise

Beginnend mit dem ersten OLE-Element im Dokument greift auf jedes Element zu, überprüft, OnUpdateEditLinksMenu ob es sich bei dem Element um einen Link handelt, und aktiviert, wenn es sich um einen Link handelt, den Befehl "Verknüpfungen". Überschreiben Sie diese Funktion, um das Verhalten zu ändern.

COleDocument::OnUpdateObjectVerbMenu

Wird vom Framework aufgerufen, um den Befehl "ObjectName " im Menü "Bearbeiten" und das Untermenü "Verb" zu aktualisieren, auf das über den Befehl "ObjectName " zugegriffen wird, wobei ObjectName der Name des in das Dokument eingebetteten OLE-Objekts ist.

afx_msg void OnUpdateObjectVerbMenu(CCmdUI* pCmdUI);

Parameter

pCmdUI
Ein Zeiger auf eine CCmdUI Struktur, die das Menü darstellt, das den Updatebefehl generiert hat. Der Updatehandler ruft die Enable Memberfunktion der CCmdUI Struktur über pCmdUI auf, um die Benutzeroberfläche zu aktualisieren.

Hinweise

OnUpdateObjectVerbMenu aktualisiert die Benutzeroberfläche des ObjectName-Befehls , je nachdem, ob ein gültiges Objekt im Dokument vorhanden ist. Wenn ein Objekt vorhanden ist, ist der Befehl "ObjectName " im Menü "Bearbeiten" aktiviert. Wenn dieser Menübefehl ausgewählt ist, wird das Untermenü "Verb" angezeigt. Das Verb-Untermenü enthält alle Verbbefehle, die für das Objekt verfügbar sind, z. B. "Bearbeiten", "Eigenschaften" usw. Überschreiben Sie diese Funktion, um das Verhalten zu ändern.

COleDocument::OnUpdatePasteLinkMenu

Wird vom Framework aufgerufen, um zu bestimmen, ob ein verknüpftes OLE-Element aus der Zwischenablage eingefügt werden kann.

afx_msg void OnUpdatePasteLinkMenu(CCmdUI* pCmdUI);

Parameter

pCmdUI
Ein Zeiger auf eine CCmdUI Struktur, die das Menü darstellt, das den Updatebefehl generiert hat. Der Updatehandler ruft die Enable Memberfunktion der CCmdUI Struktur über pCmdUI auf, um die Benutzeroberfläche zu aktualisieren.

Hinweise

Der Befehl "Inhalte einfügen" ist aktiviert oder deaktiviert, je nachdem, ob das Element in das Dokument eingefügt werden kann oder nicht.

COleDocument::OnUpdatePasteMenu

Wird vom Framework aufgerufen, um zu bestimmen, ob ein eingebettetes OLE-Element aus der Zwischenablage eingefügt werden kann.

afx_msg void OnUpdatePasteMenu(CCmdUI* pCmdUI);

Parameter

pCmdUI
Ein Zeiger auf eine CCmdUI Struktur, die das Menü darstellt, das den Updatebefehl generiert hat. Der Updatehandler ruft die Enable Memberfunktion der CCmdUI Struktur über pCmdUI auf, um die Benutzeroberfläche zu aktualisieren.

Hinweise

Der Befehl und die Schaltfläche "Einfügen" sind aktiviert oder deaktiviert, je nachdem, ob das Element in das Dokument eingefügt werden kann oder nicht.

COleDocument::RemoveItem

Rufen Sie diese Funktion auf, um ein Element aus dem Dokument zu entfernen.

virtual void RemoveItem(CDocItem* pItem);

Parameter

pItem
Zeigen Sie auf das zu entfernende Dokumentelement.

Hinweise

In der Regel müssen Sie diese Funktion nicht explizit aufrufen. sie wird von den Destruktoren für COleClientItem und COleServerItem.

COleDocument::UpdateModifiedFlag

Rufen Sie diese Funktion auf, um das Dokument als geändert zu markieren, wenn eines der enthaltenen OLE-Elemente geändert wurde.

virtual void UpdateModifiedFlag();

Hinweise

Auf diese Weise kann das Framework den Benutzer auffordern, das Dokument vor dem Schließen zu speichern, auch wenn die systemeigenen Daten im Dokument nicht geändert wurden.

Siehe auch

MFC-BeispielCONTAINER
MFC-Beispiel MFCBIND
CDocument-Klasse
Hierarchiediagramm