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 Elemente, die vom Dokument verwaltet werden, ein Element hinzu.
COleDocument:: applyprintdevice Legt das Druck Zielgerät für alle Client Elemente im Dokument fest.
COleDocument:: EnableCompoundFile Bewirkt, dass Dokumente mit dem OLE-strukturierten Speicherdatei Format gespeichert werden.
COleDocument:: getinplaceactiveitem Gibt das OLE-Element zurück, das derzeit aktiv ist.
COleDocument:: getnextclientitem Ruft das nächste Client Element für die Iteration ab.
COleDocument:: GetNextItem Ruft das nächste Dokument Element für die Iteration ab.
COleDocument:: getnextserveritem Ruft das nächste Server Element für die Iteration ab.
COleDocument:: getprimaryselecteditem Gibt das primäre ausgewählte OLE-Element im Dokument zurück.
COleDocument:: GetStartPosition Ruft die Anfangsposition ab, an der die Iterationen beginnen soll.
COleDocument:: hasblankitems Prüft, ob leere Elemente im Dokument enthalten sind.
COleDocument:: onshowviews Wird aufgerufen, wenn das Dokument sichtbar oder unsichtbar wird.
COleDocument:: RemoveItem Entfernt ein Element aus der Liste der Elemente, die vom Dokument verwaltet werden.
COleDocument:: updatemodifiedflag Markiert 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 zum Ändern des Symbols.
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 angefügtem Dokument.
COleDocument:: onupdateeditchangeicon Wird von Framework aufgerufen, um die Befehls Benutzeroberfläche für die Menüoption "Symbol bearbeiten/ändern" zu aktualisieren.
COleDocument:: onupdateeditlinksmenu Wird von Framework aufgerufen, um die Befehls Benutzeroberfläche für die Menüoption "Bearbeiten/Links" zu aktualisieren.
COleDocument:: onupdateobjectverbmenu Wird von Framework aufgerufen, um die Befehls Benutzeroberfläche für die Menüoption Bearbeiten/ objectName und das Untermenü Verb zu aktualisieren, auf das von "Edit/ objectName" zugegriffen wird.
COleDocument:: onupdatepstelinkmenu Wird von Framework aufgerufen, um die Befehls Benutzeroberfläche für die Menüoption "Kontext einfügen" zu aktualisieren.
COleDocument:: onupdatepastemenu Wird von Framework aufgerufen, um die Befehls Benutzeroberfläche für die Menüoption "Einfügen" zu aktualisieren.

Bemerkungen

COleDocument wird von abgeleitet CDocument , sodass Ihre OLE-Anwendungen die vom Microsoft Foundation Class-Bibliothek bereitgestellte Dokument-/Ansichtarchitektur verwenden können.

COleDocument behandelt ein Dokument als eine Auflistung von CDocItem -Objekten, um OLE-Elemente zu verarbeiten. Für Container-und Server Anwendungen ist eine solche Architektur erforderlich, da Ihre Dokumente OLE-Elemente enthalten müssen. Die von abgeleiteten COleServerItem -und COleClientItem -Klassen CDocItem verwalten die Interaktionen zwischen Anwendungen und OLE-Elementen.

Wenn Sie eine einfache Containeranwendung schreiben, leiten Sie die Dokument Klasse von ab COleDocument . Wenn Sie eine Containeranwendung schreiben, die das Verknüpfen mit den in den Dokumenten enthaltenen eingebetteten Elementen unterstützt, leiten Sie die Dokument Klasse von COleLinkingDocab. Wenn Sie eine Serveranwendung oder einen Kombinations Container/-Server schreiben, leiten Sie die Dokument Klasse von COleServerDocab. COleLinkingDoc und COleServerDoc werden von abgeleitet COleDocument . daher erben diese Klassen alle in und verfügbaren COleDocument Dienste CDocument .

Leiten Sie zum verwenden COleDocument von eine Klasse davon ab, und fügen Sie Funktionen hinzu, um die nicht-OLE-Daten der Anwendung sowie eingebettete oder verknüpfte Elemente zu verwalten. Wenn Sie CDocItem von abgeleitete Klassen zum Speichern der systemeigenen Daten der Anwendung definieren, können Sie die von definierte Standard Implementierung verwenden, COleDocument um sowohl OLE-als auch nicht-OLE-Daten zu speichern. Sie können auch eigene Datenstrukturen entwerfen, um Ihre nicht-OLE-Daten getrennt von den OLE-Elementen zu speichern. Weitere Informationen finden Sie im Artikel Container: Verbund Dateien.

CDocument unterstützt das Senden von Dokumenten per e-Mail, wenn der e-Mail-Support (MAPI) vorhanden ist. COleDocument hat OnFileSendMail so aktualisiert, dass Verbund Dokumente ordnungsgemäß verarbeitet werden. Weitere Informationen finden Sie in den Artikeln MAPI -und MAPI-Unterstützung in MFC.

Vererbungshierarchie

CObject

CCmdTarget

CDocument

COleDocument

Anforderungen

Header: Afxole. h

COleDocument:: AddItem

Mit dieser Funktion können Sie dem Dokument ein Element hinzufügen.

virtual void AddItem(CDocItem* pItem);

Parameter

pitem
Zeiger auf das Dokument Element, das hinzugefügt wird.

Bemerkungen

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

COleDocument:: applyprintdevice

Mit dieser Funktion können Sie das druckzielgerät für alle eingebetteten COleClientItem -Elemente im Container Dokument Ihrer Anwendung ändern.

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

Parameter

ptd
Ein Zeiger auf eine DVTARGETDEVICE Datenstruktur, die Informationen über das neue Druck Zielgerät enthält. Kann den Wert NULL haben.

PPD
Ein Zeiger auf eine PRINTDLG Datenstruktur, die Informationen über das neue Druck Zielgerät enthält. Kann den Wert NULL haben.

Rückgabewert

Ungleich 0 (null), wenn die Funktion erfolgreich war. andernfalls 0.

Bemerkungen

Diese Funktion aktualisiert das druckzielgerät für alle Elemente, aktualisiert jedoch nicht den Präsentations Cache für diese Elemente. Um den Präsentations Cache für ein Element zu aktualisieren, müssen Sie COleClientItem:: UpdateLinkaufrufen.

Die Argumente für diese Funktion enthalten Informationen, die von OLE verwendet werden, um das Zielgerät zu identifizieren. Die PRINTDLG -Struktur enthält Informationen, die Windows verwendet, um das Dialogfeld für den allgemeinen Druck zu initialisieren. Nachdem der Benutzer das Dialogfeld geschlossen hat, gibt Windows Informationen zur Auswahl des Benutzers in dieser Struktur zurück. Der m_pd Member eines CPrintDialog -Objekts ist eine- PRINTDLG Struktur.

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

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

COleDocument:: COleDocument

Erstellt ein COleDocument-Objekt.

COleDocument();

COleDocument:: EnableCompoundFile

Diese Funktion wird aufgerufen, wenn Sie das Dokument mit dem Verbund Dateiformat speichern möchten.

void EnableCompoundFile(BOOL bEnable = TRUE);

Parameter

benabel
Gibt an, ob die Unterstützung von Verbund Dateien aktiviert oder deaktiviert ist.

Bemerkungen

Dies wird auch als strukturierter Speicher bezeichnet. Diese Funktion wird in der Regel vom Konstruktor der von COleDocument abgeleiteten Klasse aufgerufen. Weitere Informationen zu Verbund Dokumenten finden Sie im Artikel Container: Verbund Dateien.

Wenn Sie diese Member-Funktion nicht aufzurufen, werden Dokumente in einem nicht strukturierten Dateiformat ("Flat") gespeichert.

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

COleDocument:: getinplaceactiveitem

Mit dieser Funktion können Sie das OLE-Element abrufen, das momentan im Rahmen Fenster mit der durch pwnd identifizierten Ansicht aktiviert ist.

virtual COleClientItem* GetInPlaceActiveItem(CWnd* pWnd);

Parameter

folgenden
Zeiger auf das Fenster, in dem das Container Dokument angezeigt wird.

Rückgabewert

Ein Zeiger auf das einzelne, direkte aktive OLE-Element; NULL, wenn sich zurzeit kein OLE-Element im Zustand "direkt aktiv" befindet.

COleDocument:: getnextclientitem

Diese Funktion wird wiederholt aufgerufen, um auf die einzelnen Client Elemente in Ihrem Dokument zuzugreifen.

COleClientItem* GetNextClientItem(POSITION& pos) const;

Parameter

pos
Ein Verweis auf einen Positionswert, der durch einen vorherigen-Aufrufwert festgelegt wurde GetNextClientItem . der Anfangswert wird von der Member-Funktion zurückgegeben GetStartPosition .

Rückgabewert

Ein Zeiger auf das nächste Client Element im Dokument oder NULL, wenn keine weiteren Client Elemente vorhanden sind.

Bemerkungen

Nach jedem-Aufrufwert wird der Wert von POS für das nächste Element im Dokument festgelegt, das möglicherweise kein Client Element 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

Diese Funktion wird wiederholt aufgerufen, um auf die einzelnen Elemente im Dokument zuzugreifen.

virtual CDocItem* GetNextItem(POSITION& pos) const;

Parameter

pos
Ein Verweis auf einen Positionswert, der durch einen vorherigen-Aufrufwert festgelegt wurde GetNextItem . der Anfangswert wird von der Member-Funktion zurückgegeben GetStartPosition .

Rückgabewert

Ein Zeiger auf das Dokument Element an der angegebenen Position.

Bemerkungen

Nach jedem-Rückruf wird der Wert von POS auf den Positionswert 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

Diese Funktion wird wiederholt aufgerufen, um auf die einzelnen Server Elemente in Ihrem Dokument zuzugreifen.

COleServerItem* GetNextServerItem(POSITION& pos) const;

Parameter

pos
Ein Verweis auf einen Positionswert, der durch einen vorherigen-Aufrufwert festgelegt wurde GetNextServerItem . der Anfangswert wird von der Member-Funktion zurückgegeben GetStartPosition .

Rückgabewert

Ein Zeiger auf das nächste Server Element im Dokument oder NULL, wenn keine weiteren Server Elemente vorhanden sind.

Bemerkungen

Nach jedem-Aufrufwert wird der Wert von POS für das nächste Element im Dokument festgelegt, wobei es sich möglicherweise um ein Server Element handelt.

Beispiel

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

COleDocument:: getprimaryselecteditem

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

virtual COleClientItem* GetPrimarySelectedItem(CView* pView);

Parameter

pView
Zeiger auf das aktive Ansichts Objekt, in dem das Dokument angezeigt wird.

Rückgabewert

Ein Zeiger auf das einzelne, ausgewählte OLE-Element. NULL, wenn keine OLE-Elemente ausgewählt sind oder wenn mehr als ein Element ausgewählt ist.

Bemerkungen

Die Standard Implementierung durchsucht die Liste der enthaltenen OLE-Elemente nach einem einzelnen ausgewählten Element und gibt einen Zeiger darauf zurück. Wenn kein Element ausgewählt ist, oder wenn mehr als ein Element ausgewählt ist, gibt die Funktion NULL zurück. Sie müssen die CView::IsSelected Member-Funktion in der Ansichts Klasse überschreiben, damit diese Funktion funktioniert. Überschreiben Sie diese Funktion, wenn Sie eine eigene Methode zum Speichern enthaltener OLE-Elemente besitzen.

COleDocument:: GetStartPosition

Mit dieser Funktion können Sie die Position des ersten Elements im Dokument abrufen.

virtual POSITION GetStartPosition() const;

Rückgabewert

Ein Positionswert, der verwendet werden kann, um mit dem Durchlaufen der Dokument Elemente zu beginnen. NULL, wenn das Dokument keine Elemente enthält.

Bemerkungen

Übergeben Sie den Wert, der an GetNextItem , oder zurückgegeben wird GetNextClientItem GetNextServerItem .

COleDocument:: hasblankitems

Diese Funktion wird aufgerufen, um zu bestimmen, ob das Dokument leere Elemente enthält.

BOOL HasBlankItems() const;

Rückgabewert

Ein Wert ungleich 0 (null), wenn das Dokument leere Elemente enthält. andernfalls 0.

Bemerkungen

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

COleDocument:: oneditchangeicon

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

afx_msg void OnEditChangeIcon();

Bemerkungen

OnEditChangeIcon erstellt und öffnet ein COleChangeIconDialog Dialogfeld zum Ändern des Symbols.

COleDocument:: oneditconvert

Zeigt das Dialogfeld OLE Convert an und konvertiert oder aktiviert das aktuell ausgewählte OLE-Element entsprechend der Benutzer Auswahl im Dialogfeld.

afx_msg void OnEditConvert();

Bemerkungen

OnEditConvert erstellt und öffnet 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/-Links an.

afx_msg void OnEditLinks();

Bemerkungen

OnEditLinks erstellt und öffnet ein COleLinksDialog Dialogfeld mit Links, in dem der Benutzer die verknüpften Objekte ändern kann.

COleDocument:: OnFileSendMail

Sendet eine Nachricht über den residenten Mailhost (sofern vorhanden) mit dem Dokument als Anlage.

afx_msg void OnFileSendMail();

Bemerkungen

OnFileSendMail Ruft OnSaveDocument auf, um unbenannte und geänderte Dokumente in einer temporären Datei zu serialisieren (speichern), die dann per elektronischer e-Mail gesendet wird. Wenn das Dokument nicht geändert wurde, wird keine temporäre Datei benötigt. das Original wird gesendet. OnFileSendMail lädt MAPI32.DLL, wenn es nicht bereits geladen wurde.

Anders als bei der Implementierung von OnFileSendMail für CDocument verarbeitet diese Funktion Verbund Dateien ordnungsgemäß.

Weitere Informationen finden Sie in den MAPI-Themen und in der MAPI-Unterstützung in MFC -Artikeln.

COleDocument:: onshowviews

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

virtual void OnShowViews(BOOL bVisible);

Parameter

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

Bemerkungen

Die Standardversion dieser Funktion führt keine Aktion aus. Überschreiben Sie diese, wenn Ihre Anwendung eine besondere Verarbeitung durchführen muss, wenn sich die Sichtbarkeit des Dokuments ändert.

COleDocument:: onupdateeditchangeicon

Wird von 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 Update-Befehl generiert hat. Der Update Handler Ruft die Enable Member-Funktion der- CCmdUI Struktur über pCmdUI auf, um die Benutzeroberfläche zu aktualisieren.

Bemerkungen

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

COleDocument:: onupdateeditlinksmenu

Wird von Framework aufgerufen, um den Link Befehl 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 Update-Befehl generiert hat. Der Update Handler Ruft die Enable Member-Funktion der- CCmdUI Struktur über pCmdUI auf, um die Benutzeroberfläche zu aktualisieren.

Bemerkungen

Beginnend mit dem ersten OLE-Element im Dokument, OnUpdateEditLinksMenu greift auf jedes Element zu, testet, ob das Element ein Link ist, und aktiviert, wenn es sich um einen Link handelt, den Link-Befehl. Überschreiben Sie diese Funktion, um das Verhalten zu ändern.

COleDocument:: onupdateobjectverbmenu

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

afx_msg void OnUpdateObjectVerbMenu(CCmdUI* pCmdUI);

Parameter

pCmdUI
Ein Zeiger auf eine- CCmdUI Struktur, die das Menü darstellt, das den Update-Befehl generiert hat. Der Update Handler Ruft die Enable Member-Funktion der- CCmdUI Struktur über pCmdUI auf, um die Benutzeroberfläche zu aktualisieren.

Bemerkungen

OnUpdateObjectVerbMenu Aktualisiert die Benutzeroberfläche des objectName -Befehls, abhängig davon, ob ein gültiges Objekt im Dokument vorhanden ist oder nicht. Wenn ein Objekt vorhanden ist, wird der objectName -Befehl im Menü "Bearbeiten" aktiviert. Wenn dieser Menübefehl ausgewählt ist, wird das Untermenü Verb angezeigt. Das Untermenü Verb enthält alle Verb Befehle, die für das Objekt verfügbar sind, wie z. b. "Bearbeiten", "Eigenschaften" usw. Überschreiben Sie diese Funktion, um das Verhalten zu ändern.

COleDocument:: onupdatepstelinkmenu

Wird von 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 Update-Befehl generiert hat. Der Update Handler Ruft die Enable Member-Funktion der- CCmdUI Struktur über pCmdUI auf, um die Benutzeroberfläche zu aktualisieren.

Bemerkungen

Der Befehl speziellen Menübefehl Einfügen ist aktiviert oder deaktiviert, je nachdem, ob das Element in das Dokument eingefügt werden kann oder nicht.

COleDocument:: onupdatepastemenu

Wird von 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 Update-Befehl generiert hat. Der Update Handler Ruft die Enable Member-Funktion der- CCmdUI Struktur über pCmdUI auf, um die Benutzeroberfläche zu aktualisieren.

Bemerkungen

Je nachdem, ob das Element in das Dokument eingefügt werden kann, werden der Menübefehl und die Schaltfläche "Einfügen" aktiviert oder deaktiviert.

COleDocument:: RemoveItem

Diese Funktion wird aufgerufen, um ein Element aus dem Dokument zu entfernen.

virtual void RemoveItem(CDocItem* pItem);

Parameter

pitem
Zeiger auf das zu entfernende Dokument Element.

Bemerkungen

Sie müssen diese Funktion in der Regel nicht explizit aufzurufen. Sie wird von den de-dektoren für COleClientItem und aufgerufen COleServerItem .

COleDocument:: updatemodifiedflag

Diese Funktion wird aufgerufen, um das Dokument als geändert zu markieren, wenn eines der enthaltenen OLE-Elemente geändert wurde.

virtual void UpdateModifiedFlag();

Bemerkungen

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

Siehe auch

MFC-Beispiel Container
MFC-Beispiel MFCBIND
CDocument-Klasse
Hierarchie Diagramm