Klasa CMetaFileDC
Implementuje metaplik systemu Windows, który zawiera sekwencję poleceń interfejsu urządzenia graficznego (GDI), które można odtworzyć w celu utworzenia żądanego obrazu lub tekstu.
Składnia
class CMetaFileDC : public CDC
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CMetaFileDC::CMetaFileDC | CMetaFileDC Tworzy obiekt. |
Metody publiczne
Nazwa/nazwisko | opis |
---|---|
CMetaFileDC::Close | Zamyka kontekst urządzenia i tworzy uchwyt metapliku. |
CMetaFileDC::CloseEnhanced | Zamyka kontekst urządzenia z rozszerzonymi metaplikami i tworzy dojście rozszerzonego metapliku. |
CMetaFileDC::Create | Tworzy kontekst urządzenia metapliku systemu Windows i dołącza go do CMetaFileDC obiektu. |
CMetaFileDC::CreateEnhanced | Tworzy kontekst urządzenia metapliku dla metapliku w rozszerzonym formacie. |
Uwagi
Aby zaimplementować metaplik systemu Windows, najpierw utwórz CMetaFileDC
obiekt. Wywołaj CMetaFileDC
konstruktor, a następnie wywołaj funkcję Utwórz składową, która tworzy kontekst urządzenia metapliku CMetaFileDC
systemu Windows i dołącza go do obiektu.
Następnie wyślij CMetaFileDC
obiekt do sekwencji poleceń GDI cdC, które zamierzasz odtworzyć. Można użyć tylko tych poleceń GDI, które tworzą dane wyjściowe, takie jak MoveTo
i LineTo
, .
Po wysłaniu żądanych poleceń do metapliku wywołaj Close
funkcję składową, która zamyka konteksty urządzenia metapliku i zwraca uchwyt metapliku. Następnie usunąć CMetaFileDC
obiekt.
CdC::P layMetaFile może następnie używać uchwytu metapliku do wielokrotnego odtwarzania metapliku. Metaplik można również manipulować za pomocą funkcji systemu Windows, takich jak CopyMetaFile, który kopiuje metaplik na dysk.
Gdy metaplik nie jest już potrzebny, usuń go z pamięci za pomocą funkcji DeleteMetaFile systemu Windows.
Można również zaimplementować CMetaFileDC
obiekt, aby mógł obsługiwać zarówno wywołania wyjściowe, jak i wywołania GDI atrybutu, takie jak GetTextExtent
. Taki metaplik jest bardziej elastyczny i może łatwiej używać ogólnego kodu GDI, który często składa się z kombinacji wywołań danych wyjściowych i atrybutów. Klasa CMetaFileDC
dziedziczy dwa konteksty urządzeń i m_hDC
m_hAttribDC
, z usługi CDC. Kontekst m_hDC
urządzenia obsługuje wszystkie wywołania wyjściowe usługi CDC GDI, a m_hAttribDC
kontekst urządzenia obsługuje wszystkie wywołania atrybutów GDI usługi CDC. Zwykle te dwa konteksty urządzeń odnoszą się do tego samego urządzenia. W przypadku atrybutu CMetaFileDC
kontroler domeny jest domyślnie ustawiony na wartość NULL.
Utwórz drugi kontekst urządzenia, który wskazuje ekran, drukarkę lub urządzenie inne niż metaplik, a następnie wywołaj SetAttribDC
funkcję składową, aby skojarzyć nowy kontekst urządzenia z m_hAttribDC
. Wywołania interfejsu GDI dotyczące informacji zostaną teraz skierowane do nowego m_hAttribDC
elementu . Wywołania interfejsu GDI wyjściowego trafią do m_hDC
elementu , który reprezentuje metaplik.
Aby uzyskać więcej informacji na temat CMetaFileDC
programu , zobacz Konteksty urządzeń.
Hierarchia dziedziczenia
CMetaFileDC
Wymagania
Nagłówek: afxext.h
CMetaFileDC::Close
Zamyka kontekst urządzenia metapliku i tworzy uchwyt metapliku systemu Windows, który może służyć do odtwarzania metapliku przy użyciu funkcji składowej CDC::P layMetaFile .
HMETAFILE Close();
Wartość zwracana
Prawidłowy plik HMETAFILE, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie wartość NULL.
Uwagi
Uchwyt metapliku systemu Windows może również służyć do manipulowania metaplikiem za pomocą funkcji systemu Windows, takich jak CopyMetaFile.
Usuń metaplik po użyciu, wywołując funkcję Windows DeleteMetaFile .
CMetaFileDC::CloseEnhanced
Zamyka kontekst urządzenia z rozszerzonymi metaplikami i zwraca uchwyt identyfikujący metaplik w rozszerzonym formacie.
HENHMETAFILE CloseEnhanced();
Wartość zwracana
Uchwyt rozszerzonego metapliku, jeśli się powiedzie; w przeciwnym razie wartość NULL.
Uwagi
Aplikacja może użyć dojścia rozszerzonego metapliku zwróconego przez tę funkcję, aby wykonać następujące zadania:
Wyświetlanie obrazu przechowywanego w rozszerzonym metapliku
Tworzenie kopii rozszerzonego metapliku
Wyliczanie, edytowanie lub kopiowanie poszczególnych rekordów w rozszerzonym metapliku
Pobieranie opcjonalnego opisu zawartości metapliku z nagłówka enhanced-metafile
Pobieranie kopii nagłówka enhanced-metafile
Pobieranie kopii binarnej rozszerzonego metapliku
Wyliczanie kolorów w opcjonalnej palecie
Konwertowanie metapliku w formacie rozszerzonym na metaplik w formacie systemu Windows
Gdy aplikacja nie potrzebuje już rozszerzonego uchwytu metapliku, powinna zwolnić dojście przez wywołanie funkcji Win32 DeleteEnhMetaFile
.
CMetaFileDC::CMetaFileDC
Skonstruuj CMetaFileDC
obiekt w dwóch krokach.
CMetaFileDC();
Uwagi
Najpierw wywołaj metodę CMetaFileDC
, a następnie wywołaj Create
metodę , która tworzy kontekst urządzenia metapliku systemu Windows i dołącza go do CMetaFileDC
obiektu.
CMetaFileDC::Create
Skonstruuj CMetaFileDC
obiekt w dwóch krokach.
BOOL Create(LPCTSTR lpszFilename = NULL);
Parametry
lpszFilename
Wskazuje ciąg znaków o wartości null. Określa nazwę pliku metapliku do utworzenia. Jeśli lpszFilename ma wartość NULL, zostanie utworzony nowy metaplik w pamięci.
Wartość zwracana
Różne od zera, jeśli funkcja zakończyła się pomyślnie; w przeciwnym razie 0.
Uwagi
Najpierw wywołaj konstruktor CMetaFileDC
, a następnie wywołaj Create
metodę , która tworzy kontekst urządzenia metapliku CMetaFileDC
systemu Windows i dołącza go do obiektu.
CMetaFileDC::CreateEnhanced
Tworzy kontekst urządzenia dla metapliku w formacie rozszerzonym.
BOOL CreateEnhanced(
CDC* pDCRef,
LPCTSTR lpszFileName,
LPCRECT lpBounds,
LPCTSTR lpszDescription);
Parametry
pDCRef
Identyfikuje urządzenie referencyjne dla rozszerzonego metapliku.
lpszFileName
Wskazuje ciąg znaków o wartości null. Określa nazwę pliku rozszerzonego metapliku do utworzenia. Jeśli ten parametr ma wartość NULL, rozszerzony metaplik jest oparty na pamięci, a jego zawartość zostanie utracona, gdy obiekt zostanie zniszczony lub gdy wywoływana jest funkcja Win32 DeleteEnhMetaFile
.
lpBounds
Wskazuje strukturę danych RECT lub obiekt CRect, który określa wymiary w jednostkach HIMETRIC (w przyrostach 01 milimetrów) obrazu do przechowywania w rozszerzonym metapliku.
lpszDescription
Wskazuje ciąg zerowy, który określa nazwę aplikacji, która utworzyła obraz, a także tytuł obrazu.
Wartość zwracana
Uchwyt kontekstu urządzenia dla rozszerzonego metapliku, jeśli się powiedzie; w przeciwnym razie wartość NULL.
Uwagi
Ten kontroler domeny może służyć do przechowywania obrazu niezależnego od urządzenia.
System Windows używa urządzenia odniesienia zidentyfikowanego przez parametr pDCRef do rejestrowania rozdzielczości i jednostek urządzenia, na którym pierwotnie pojawił się obraz. Jeśli parametr pDCRef ma wartość NULL, używa bieżącego urządzenia wyświetlania do celów referencyjnych.
Lewe i górne elementy członkowskie RECT
struktury danych wskazywane przez parametr lpBounds muszą być mniejsze niż prawe i dolne elementy członkowskie. Punkty wzdłuż krawędzi prostokąta znajdują się w obrazie. Jeśli wartość lpBounds ma wartość NULL, interfejs urządzenia graficznego (GDI) oblicza wymiary najmniejszego prostokąta, który może ująć obraz narysowany przez aplikację. Parametr lpBounds należy podać tam, gdzie to możliwe.
Ciąg wskazywany przez parametr lpszDescription musi zawierać znak null między nazwą aplikacji a nazwą obrazu i musi zakończyć się dwoma znakami null — na przykład "XYZ Graphics Editor\0Bald Eagle\0\0", gdzie \0 reprezentuje znak null. Jeśli parametr lpszDescription ma wartość NULL, w nagłówku enhanced-metafile nie ma odpowiedniego wpisu.
Aplikacje używają kontrolera domeny utworzonego przez tę funkcję do przechowywania obrazu graficznego w rozszerzonym metapliku. Dojście identyfikujące ten kontroler domeny można przekazać do dowolnej funkcji GDI.
Gdy aplikacja zapisze obraz w rozszerzonym metapliku, może wyświetlić obraz na dowolnym urządzeniu wyjściowym, wywołując CDC::PlayMetaFile
funkcję. Podczas wyświetlania obrazu system Windows używa prostokąta wskazywanego przez parametr lpBounds i dane rozdzielczości z urządzenia odniesienia do położenia i skalowania obrazu. Kontekst urządzenia zwrócony przez tę funkcję zawiera te same atrybuty domyślne skojarzone z dowolnym nowym kontrolerem domeny.
Aplikacje muszą używać funkcji Win32 GetWinMetaFileBits
, aby przekonwertować rozszerzony metaplik na starszy format metapliku systemu Windows.
Nazwa pliku rozszerzonego metapliku powinna używać . Rozszerzenie EMF.