Udostępnij za pośrednictwem


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 CMetaFileDCkontroler 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_hAttribDCelementu . Wywołania interfejsu GDI wyjściowego trafią do m_hDCelementu , który reprezentuje metaplik.

Aby uzyskać więcej informacji na temat CMetaFileDCprogramu , zobacz Konteksty urządzeń.

Hierarchia dziedziczenia

Obiekt CObject

CDC

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 Createmetodę , 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 Createmetodę , 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.

Zobacz też

Klasa CDC
Wykres hierarchii