Sdílet prostřednictvím


CMetaFileDC – třída

Implementuje metasoubor Windows, který obsahuje posloupnost příkazů rozhraní grafického zařízení (GDI), které můžete přehrát a vytvořit požadovaný obrázek nebo text.

Syntaxe

class CMetaFileDC : public CDC

Členové

Veřejné konstruktory

Jméno popis
CMetaFileDC::CMetaFileDC CMetaFileDC Vytvoří objekt.

Veřejné metody

Jméno popis
CMetaFileDC::Close Zavře kontext zařízení a vytvoří popisovač metasouboru.
CMetaFileDC::CloseEnhanced Zavře kontext zařízení s rozšířeným metasouborem a vytvoří úchyt rozšířeného metasouboru.
CMetaFileDC::Create Vytvoří kontext zařízení metasouboru Windows a připojí ho k objektu CMetaFileDC .
CMetaFileDC::CreateEnhanced Vytvoří kontext zařízení metasouboru pro metasoubor s rozšířeným formátem.

Poznámky

Pokud chcete implementovat metasoubor Systému Windows, nejprve vytvořte CMetaFileDC objekt. CMetaFileDC Vyvoláte konstruktor a pak zavolejte funkci Create member, která vytvoří kontext zařízení metasouboru Windows a připojí ho k objektuCMetaFileDC.

Dále odešlete CMetaFileDC objekt pořadí příkazů GDI CDC, které chcete, aby se znovu přehrál. Lze použít pouze příkazy GDI, které vytvářejí výstup, například MoveTo a LineTo.

Po odeslání požadovaných příkazů do metasouboru zavolejte Close členovou funkci, která zavře kontexty zařízení metasouboru a vrátí popisovač metasouboru. Pak objekt CMetaFileDC odstraňte.

CDC::P layMetaFile pak může k opakovanému přehrání metasouboru použít popisovač metasouboru. Metasoubor může být také manipulován funkcemi Systému Windows, jako je CopyMetaFile, které kopírují metasoubor na disk.

Pokud už metasoubor nepotřebujete, odstraňte ho z paměti pomocí funkce DeleteMetaFile Windows.

Objekt můžete také implementovat CMetaFileDC , aby mohl zpracovávat jak výstupní volání, tak i volání GDI atributu, jako GetTextExtentje . Takový metasoubor je flexibilnější a může snadněji opakovaně používat obecný kód GDI, který se často skládá z kombinace volání výstupu a atributů. Třída CMetaFileDC dědí dva kontexty m_hDC zařízení a m_hAttribDC, z CDC. Kontext m_hDC zařízení zpracovává všechna výstupní volání GDI CDC a m_hAttribDC kontext zařízení zpracovává všechna volání atributu GDI CDC. Za normálních okolností tyto dva kontexty zařízení odkazují na stejné zařízení. V případě CMetaFileDCje řadič domény atributu ve výchozím nastavení nastaven na hodnotu NULL.

Vytvořte druhý kontext zařízení, který odkazuje na obrazovku, tiskárnu nebo jiné zařízení než metasoubor, a potom zavolejte SetAttribDC členovou funkci, která přidruží nový kontext m_hAttribDCzařízení . Výzvy GDI k informacím budou nyní směrovány na nový m_hAttribDC. Výstupní volání GDI přejdou na m_hDC, což představuje metasoubor.

Další informace najdete v CMetaFileDCtématu Kontexty zařízení.

Hierarchie dědičnosti

Objekt CObject

CDC

CMetaFileDC

Požadavky

Hlavička: afxext.h

CMetaFileDC::Close

Zavře kontext zařízení metasouboru a vytvoří popisovač metasouboru systému Windows, který lze použít k přehrání metasouboru pomocí členské funkce CDC::P layMetaFile .

HMETAFILE Close();

Vrácená hodnota

Platný soubor HMETAFILE, pokud je funkce úspěšná; jinak NULL.

Poznámky

Popisovač metasouboru systému Windows lze použít také k manipulaci s metasoubory pomocí funkcí systému Windows, jako je CopyMetaFile.

Po použití odstraňte metasoubor voláním funkce Windows DeleteMetaFile .

CMetaFileDC::CloseEnhanced

Zavře kontext zařízení s rozšířeným metasouborem a vrátí popisovač, který identifikuje metasoubor s rozšířeným formátem.

HENHMETAFILE CloseEnhanced();

Vrácená hodnota

Popisovač rozšířeného metasouboru, pokud je úspěšný; jinak NULL.

Poznámky

Aplikace může k provádění následujících úloh použít popisovač rozšířeného metasouboru vrácené touto funkcí:

  • Zobrazení obrázku uloženého v rozšířeném metasouboru

  • Vytvoření kopií rozšířeného metasouboru

  • Zobrazení výčtu, úprav nebo kopírování jednotlivých záznamů v rozšířeném metasouboru

  • Načtení volitelného popisu obsahu metasouboru z hlavičky rozšířeného metasouboru

  • Načtení kopie hlavičky rozšířeného metasouboru

  • Načtení binární kopie rozšířeného metasouboru

  • Výčet barev v volitelné paletě

  • Převod metasouboru s rozšířeným formátem na metasoubor ve formátu Windows

Pokud aplikace už nepotřebuje vylepšený popisovač metasouboru, měl by uvolnit popisovač voláním funkce Win32 DeleteEnhMetaFile .

CMetaFileDC::CMetaFileDC

Vytvořte CMetaFileDC objekt ve dvou krocích.

CMetaFileDC();

Poznámky

Nejprve zavolejte CMetaFileDC, pak volání Create, který vytvoří kontext zařízení metasouboru Windows a připojí ho k objektu CMetaFileDC .

CMetaFileDC::Create

Vytvořte CMetaFileDC objekt ve dvou krocích.

BOOL Create(LPCTSTR lpszFilename = NULL);

Parametry

lpszFilename
Odkazuje na řetězec znaků ukončeného hodnotou null. Určuje název souboru metasouboru, který se má vytvořit. Pokud je lpszFilename NULL, vytvoří se nový metasoubor v paměti.

Vrácená hodnota

Nenulové, pokud je funkce úspěšná; jinak 0.

Poznámky

Nejprve zavolejte konstruktor CMetaFileDCa potom volání Create, který vytvoří kontext zařízení metasouboru Windows a připojí ho k objektu CMetaFileDC .

CMetaFileDC::CreateEnhanced

Vytvoří kontext zařízení pro metasoubor s rozšířeným formátem.

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

Parametry

pDCRef
Identifikuje referenční zařízení pro vylepšený metasoubor.

lpszFileName
Odkazuje na řetězec znaků ukončeného hodnotou null. Určuje název souboru rozšířeného metasouboru, který se má vytvořit. Pokud je tento parametr NULL, je rozšířený metasoubor založen na paměti a jeho obsah ztracen při zničení objektu nebo při zavolání funkce Win32 DeleteEnhMetaFile .

lpBounds
Odkazuje na datovou strukturu RECT nebo objekt CRect , který určuje rozměry v jednotkách HIMETRIC (v přírůstcích 01 milimetrů) obrázku, které mají být uloženy v rozšířeném metasouboru.

lpszDescription
Odkazuje na řetězec s nulovým ukončením, který určuje název aplikace, která obrázek vytvořila, a také název obrázku.

Vrácená hodnota

Popisovač kontextu zařízení pro rozšířený metasoubor, pokud je úspěšný; jinak NULL.

Poznámky

Tento řadič domény lze použít k uložení obrázku nezávislého na zařízení.

Systém Windows používá referenční zařízení identifikované parametrem pDCRef k zaznamenání rozlišení a jednotek zařízení, na kterém byl obrázek původně zobrazen. Pokud je parametr pDCRef NULL, použije aktuální zobrazovací zařízení pro referenci.

Levé a horní členy RECT datové struktury, na které odkazuje parametr lpBounds , musí být menší než pravé a dolní členy. Body podél okrajů obdélníku jsou součástí obrázku. Pokud je hodnota lpBounds NULL, rozhraní grafického zařízení (GDI) vypočítá rozměry nejmenšího obdélníku, který může uzavřít obrázek nakreslený aplikací. Pokud je to možné, měl by být zadán parametr lpBounds .

Řetězec odkazovaný parametrem lpszDescription musí obsahovat znak null mezi názvem aplikace a názvem obrázku a musí končit dvěma znaky null – například "XYZ Graphics Editor\0Bald Eagle\0\0", kde \0 představuje znak null. Pokud je lpszDescription NULL, v hlavičce rozšířeného metasouboru neexistuje žádná odpovídající položka.

Aplikace používají řadič domény vytvořený touto funkcí k uložení grafického obrázku do rozšířeného metasouboru. Popisovač identifikující tento řadič domény lze předat libovolné funkci GDI.

Jakmile aplikace uloží obrázek do rozšířeného metasouboru, může obrázek zobrazit na libovolném výstupním zařízení zavoláním CDC::PlayMetaFile funkce. Při zobrazení obrázku používá Systém Windows obdélník odkazující na parametr lpBounds a data rozlišení z referenčního zařízení k umístění a škálování obrázku. Kontext zařízení vrácený touto funkcí obsahuje stejné výchozí atributy přidružené k jakémukoli novému řadiči domény.

Aplikace musí použít funkci Win32 GetWinMetaFileBits k převodu rozšířeného metasouboru do staršího formátu metasouboru Systému Windows.

Název souboru rozšířeného metasouboru by měl použít . Rozšíření EMF.

Viz také

CDC – třída
Graf hierarchie