Freigeben über


CMetaFileDC-Klasse

Implementiert eine Windows-Metadatei, die eine Sequenz von Graphics Device Interface (GDI)-Befehlen enthält, dass Sie wiedergeben können, um ein gewünschtes Bild oder einen Text zu erstellen.

Syntax

class CMetaFileDC : public CDC

Member

Öffentliche Konstruktoren

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

Öffentliche Methoden

Name Beschreibung
CMetaFileDC::Close Schließt den Gerätekontext und erstellt ein Metadateihandle.
CMetaFileDC::CloseEnhanced Schließt einen Erweitert-Metafile-Gerätekontext und erstellt ein enhanced-metafile handle.
CMetaFileDC::Create Erstellt den Windows-Metadateigerätekontext und fügt ihn an das CMetaFileDC Objekt an.
CMetaFileDC::CreateEnhanced Erstellt einen Metadateigerätekontext für eine Metadatei im erweiterten Format.

Hinweise

Um eine Windows-Metadatei zu implementieren, erstellen Sie zuerst ein CMetaFileDC Objekt. Rufen Sie den CMetaFileDC Konstruktor auf, und rufen Sie dann die Create-Memberfunktion auf, die einen Windows-Metadateigerätekontext erstellt und an das CMetaFileDC Objekt anfügt.

Senden Sie als Nächstes das CMetaFileDC Objekt an die Sequenz von CDC GDI-Befehlen, die Sie für die Wiedergabe beabsichtigen. Es können nur die GDI-Befehle verwendet werden, die eine Ausgabe erstellen, z MoveTo . B. und LineTodiese.

Nachdem Sie die gewünschten Befehle an die Metadatei gesendet haben, rufen Sie die Close Memberfunktion auf, die den Metafile-Gerätekontext schließt und ein Metadateihandle zurückgibt. Löschen Sie dann das CMetaFileDC Objekt.

CDC::P layMetaFile kann dann das Metafile-Handle verwenden, um die Metadatei wiederholt wiederzugeben. Die Metadatei kann auch von Windows-Funktionen wie CopyMetaFile bearbeitet werden, die eine Metadatei auf den Datenträger kopiert.

Wenn die Metadatei nicht mehr benötigt wird, löschen Sie sie aus dem Speicher mit der Windows-Funktion DeleteMetaFile .

Sie können das CMetaFileDC Objekt auch implementieren, damit es sowohl Ausgabeaufrufe als auch Attribut-GDI-Aufrufe wie z GetTextExtent. B. verarbeiten kann. Eine solche Metadatei ist flexibler und kann allgemeinen GDI-Code einfacher wiederverwenden, der häufig aus einer Mischung aus Ausgabe- und Attributaufrufen besteht. Die CMetaFileDC Klasse erbt zwei Gerätekontexte m_hDC und m_hAttribDC, von CDC. Der m_hDC Gerätekontext verarbeitet alle CDC GDI-Ausgabeaufrufe und der m_hAttribDC Gerätekontext verarbeitet alle CDC GDI-Attributaufrufe. Normalerweise beziehen sich diese beiden Gerätekontexte auf dasselbe Gerät. Im Fall von CMetaFileDC, das Attribut DC wird standardmäßig auf NULL festgelegt.

Erstellen Sie einen zweiten Gerätekontext, der auf den Bildschirm, einen Drucker oder ein anderes Gerät als eine Metadatei zeigt, und rufen Sie dann die SetAttribDC Memberfunktion auf, um den neuen Gerätekontext zuzuordnen m_hAttribDC. GDI-Aufrufe für Informationen werden nun an das neue m_hAttribDCweitergeleitet. Ausgabe-GDI-Aufrufe gehen zu m_hDC, die die Metadatei darstellt.

Weitere Informationen CMetaFileDCfinden Sie unter "Gerätekontexte".

Vererbungshierarchie

CObject

CDC

CMetaFileDC

Anforderungen

Header: afxext.h

CMetaFileDC::Close

Schließt den Kontext des Metadateigeräts und erstellt ein Windows-Metadateihandle, mit dem die Metadatei mithilfe der CDC::P layMetaFile-Memberfunktion wiedergegeben werden kann.

HMETAFILE Close();

Rückgabewert

Eine gültige HMETAFILE-Datei, wenn die Funktion erfolgreich ist; andernfalls NULL.

Hinweise

Das Windows-Metadateihandle kann auch verwendet werden, um die Metadatei mit Windows-Funktionen wie CopyMetaFile zu bearbeiten.

Löschen Sie die Metadatei nach der Verwendung, indem Sie die Windows DeleteMetaFile-Funktion aufrufen.

CMetaFileDC::CloseEnhanced

Schließt einen Gerätekontext mit erweiterter Metadatei und gibt ein Handle zurück, das eine Metadatei im erweiterten Format identifiziert.

HENHMETAFILE CloseEnhanced();

Rückgabewert

Ein Handle einer erweiterten Metadatei, falls erfolgreich; andernfalls NULL.

Hinweise

Eine Anwendung kann das von dieser Funktion zurückgegebene Enhanced-Metafile-Handle verwenden, um die folgenden Aufgaben auszuführen:

  • Anzeigen eines Bilds, das in einer erweiterten Metadatei gespeichert ist

  • Erstellen von Kopien der erweiterten Metadatei

  • Aufzählen, Bearbeiten oder Kopieren einzelner Datensätze in der erweiterten Metadatei

  • Abrufen einer optionalen Beschreibung des Metadateiinhalts aus dem Enhanced-Metafile-Header

  • Abrufen einer Kopie des Enhanced-Metafile-Headers

  • Abrufen einer binären Kopie der erweiterten Metadatei

  • Aufzählen der Farben in der optionalen Palette

  • Konvertieren einer Metadatei im erweiterten Format in eine Windows-Format-Metadatei

Wenn die Anwendung das erweiterte Metadateihandle nicht mehr benötigt, sollte sie das Handle durch Aufrufen der Win32-Funktion DeleteEnhMetaFile freigeben.

CMetaFileDC::CMetaFileDC

Erstellen Sie ein CMetaFileDC Objekt in zwei Schritten.

CMetaFileDC();

Hinweise

Rufen CreateSie CMetaFileDCzunächst den Windows-Metadateigerätekontext auf, und fügen Sie ihn an das CMetaFileDC Objekt an.

CMetaFileDC::Create

Erstellen Sie ein CMetaFileDC Objekt in zwei Schritten.

BOOL Create(LPCTSTR lpszFilename = NULL);

Parameter

lpszFilename
Verweist auf eine mit Null beendete Zeichenfolge. Gibt den Dateinamen der zu erstellenden Metadatei an. Wenn lpszFilename NULL ist, wird eine neue In-Memory-Metadatei erstellt.

Rückgabewert

Ist ungleich null (0), wenn die Funktion erfolgreich ausgeführt wird, andernfalls null (0).

Hinweise

Rufen Sie zuerst den Konstruktor CMetaFileDCauf, und rufen Sie dann den CreateWindows-Metadateigerätekontext auf, und fügt ihn an das CMetaFileDC Objekt an.

CMetaFileDC::CreateEnhanced

Erstellt einen Gerätekontext für eine Metadatei im erweiterten Format.

BOOL CreateEnhanced(
    CDC* pDCRef,
    LPCTSTR lpszFileName,
    LPCRECT lpBounds,
    LPCTSTR lpszDescription);

Parameter

pDCRef
Identifiziert ein Referenzgerät für die erweiterte Metadatei.

lpszFileName
Verweist auf eine mit Null beendete Zeichenfolge. Gibt den Dateinamen für die zu erstellende erweiterte Metadatei an. Wenn dieser Parameter NULL ist, ist die erweiterte Metadatei speicherbasiert und der Inhalt verloren gegangen, wenn das Objekt zerstört wird oder wenn die Win32-Funktion DeleteEnhMetaFile aufgerufen wird.

lpBounds
Verweist auf eine RECT-Datenstruktur oder ein CRect-Objekt , das die Dimensionen in HIMETRIC-Einheiten (in 01-Millimeter-Schritten) des Bilds angibt, das in der erweiterten Metadatei gespeichert werden soll.

lpszDescription
Verweist auf eine leere Zeichenfolge, die den Namen der Anwendung angibt, die das Bild erstellt hat, sowie den Titel des Bilds.

Rückgabewert

Ein Handle des Gerätekontexts für die erweiterte Metadatei, falls erfolgreich; andernfalls NULL.

Hinweise

Dieser DC kann verwendet werden, um ein geräteunabhängiges Bild zu speichern.

Windows verwendet das vom pDCRef-Parameter identifizierte Referenzgerät, um die Auflösung und Einheiten des Geräts aufzuzeichnen, auf dem ein Bild ursprünglich angezeigt wurde. Wenn der pDCRef-Parameter NULL ist, wird das aktuelle Anzeigegerät für den Verweis verwendet.

Die linken und oberen Elemente der RECT Datenstruktur, auf die der lpBounds-Parameter verweist, müssen kleiner als die rechten bzw. unteren Elemente sein. Punkte entlang der Ränder des Rechtecks sind im Bild enthalten. Wenn lpBounds NULL ist, berechnet die Grafikgeräteschnittstelle (Graphics Device Interface, GDI) die Dimensionen des kleinsten Rechtecks, das das von der Anwendung gezeichnete Bild einschließen kann. Der parameter lpBounds sollte nach Möglichkeit bereitgestellt werden.

Die Zeichenfolge, auf die der LpszDescription-Parameter verweist, muss ein NULL-Zeichen zwischen dem Anwendungsnamen und dem Bildnamen enthalten und mit zwei Nullzeichen beendet werden, z. B. "XYZ Graphics Editor\0Bald Eagle\0\0", wobei \0 das Nullzeichen darstellt. Wenn lpszDescription NULL ist, gibt es keinen entsprechenden Eintrag im Enhanced-Metafile-Header.

Anwendungen verwenden den von dieser Funktion erstellten DC, um ein Grafikbild in einer erweiterten Metadatei zu speichern. Der Handle, der diese DC identifiziert, kann an eine beliebige GDI-Funktion übergeben werden.

Nachdem eine Anwendung ein Bild in einer erweiterten Metadatei gespeichert hat, kann es das Bild auf jedem Ausgabegerät anzeigen, indem die CDC::PlayMetaFile Funktion aufgerufen wird. Beim Anzeigen des Bilds verwendet Windows das Rechteck, auf das der lpBounds-Parameter verweist, und die Auflösungsdaten des Referenzgeräts, um das Bild zu positionieren und zu skalieren. Der von dieser Funktion zurückgegebene Gerätekontext enthält dieselben Standardattribute, die jedem neuen DC zugeordnet sind.

Anwendungen müssen die Win32-Funktion GetWinMetaFileBits verwenden, um eine erweiterte Metadatei in das ältere Windows-Metadateiformat zu konvertieren.

Der Dateiname für die erweiterte Metadatei sollte die . EMF-Erweiterung.

Siehe auch

CDC-Klasse
Hierarchiediagramm