Udostępnij za pośrednictwem


Ulepszone tworzenie metapliku

Można utworzyć rozszerzony metaplik przy użyciu funkcji CreateEnhMetaFile, podając odpowiednie argumenty. System używa tych argumentów do utrzymania wymiarów obrazu, określania, czy metaplik powinien być przechowywany na dysku, czy w pamięci itd.

Aby zachować wymiary obrazu na urządzeniach wyjściowych, CreateEnhMetaFile wymaga rozwiązania urządzenia odniesienia. Ten urządzenia odniesienia jest urządzeniem, na którym po raz pierwszy pojawił się obraz, a odwołanie dc jest kontekstem urządzenia skojarzonym z urządzeniem odniesienia. Podczas wywoływania funkcji CreateEnhMetaFile należy podać uchwyt identyfikujący ten kontroler domeny. Tę obsługę można uzyskać, wywołując funkcję GetDC lub CreateDC. Można również określić null jako uchwyt do korzystania z bieżącego urządzenia wyświetlania dla urządzenia odniesienia.

Większość aplikacji trwale przechowuje obrazy i dlatego tworzy rozszerzony metaplik, który jest przechowywany na dysku; istnieją jednak pewne wystąpienia, gdy nie jest to konieczne. Na przykład aplikacja do przetwarzania wyrazów, która zapewnia możliwości rysowania wykresów, może przechowywać wykres zdefiniowany przez użytkownika w pamięci jako rozszerzony metaplik, a następnie skopiować ulepszone bity metapliku z pamięci do pliku dokumentu użytkownika. Aplikacja, która wymaga metapliku przechowywanego trwale na dysku, musi podać nazwę pliku, gdy wywołuje CreateEnhMetaFile. Jeśli nie podasz nazwy pliku, system automatycznie traktuje metaplik jako plik tymczasowy i zapisuje go w pamięci.

Opcjonalny opis tekstu można dodać do metapliku zawierającego informacje o obrazie i autorze. Aplikacja może wyświetlać te ciągi w oknie dialogowym Otwieranie pliku, aby udostępnić użytkownikowi informacje o zawartości metapliku, która pomoże wybrać odpowiedni plik. Jeśli aplikacja zawiera opis tekstu, musi podać wskaźnik do ciągu, gdy wywołuje CreateEnhMetaFile.

Po pomyślnym createEnhMetaFile zwraca uchwyt identyfikujący specjalny kontekst urządzenia metapliku. Kontekst urządzenia metapliku jest unikatowy, ponieważ jest skojarzony z plikiem, a nie z urządzeniem wyjściowym. Gdy system przetwarza funkcję GDI, która otrzymała uchwyt do kontekstu urządzenia metapliku, konwertuje funkcję GDI na rozszerzony rekord metapliku i dołącza rekord na końcu rozszerzonego metapliku.

Po zakończeniu obrazu i dołączeniu ostatniego rekordu do rozszerzonego metapliku aplikacja może zamknąć plik, wywołując funkcję CloseEnhMetaFile. Ta funkcja zamyka i usuwa specjalny kontekst urządzenia metapliku i zwraca uchwyt identyfikujący rozszerzony metaplik.

Aby usunąć metafile w rozszerzonym formacie lub dojście metapliku w formacie rozszerzonym, wywołaj funkcję DeleteEnhMetaFile.