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
Název | Popis |
---|---|
CMetaFileDC::CMetaFileDC | CMetaFileDC Vytvoří objekt. |
Veřejné metody
Název | 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 GetTextExtent
je . 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ě CMetaFileDC
je ř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_hAttribDC
zaří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 CMetaFileDC
tématu Kontexty zařízení.
Hierarchie dědičnosti
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();
Návratová 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();
Návratová 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.
Návratová hodnota
Nenulové, pokud je funkce úspěšná; jinak 0.
Poznámky
Nejprve zavolejte konstruktor CMetaFileDC
a 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.
Návratová 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.