You can use the handle to an enhanced metafile to accomplish the following tasks.
These tasks are discussed in the sections in the remainder of this topic.
You can display the picture stored in an enhanced metafile using the PlayEnhMetaFile function. Pass the function a handle to the enhanced metafile, without being concerned with the format of the enhanced metafile records. However, it is sometimes desirable to enumerate the records in the enhanced metafile to search for a particular GDI function and modify the parameters of the function in some manner. To do this, you can use EnumEnhMetaFile and provide a callback function, EnhMetaFileProc, to process the enhanced metafile records. To modify the parameters for an enhanced metafile record, you must know the format of the parameters within the record.
Some applications create temporary backup (or duplicate) copies of a file before enabling the user to alter the original. An application can create a backup copy of an enhanced metafile by calling the CopyEnhMetaFile function, supplying a handle that identifies the enhanced metafile, and supplying a pointer to the name of the new file.
To create a memory-based enhanced-format metafile, call the SetEnhMetaFileBits function.
Most drawing, illustration, and computer-aided design (CAD) applications require a means of editing a picture stored in an enhanced metafile. Although editing an enhanced metafile is a complex task, you can use the EnumEnhMetaFile function in combination with other functions to provide this capability in your application. The EnumEnhMetaFile function and its associated callback function, EnhMetaFileProc, enable the application to process individual records in an enhanced metafile.
Some applications display the text description of an enhanced metafile with the corresponding filename in the File Open dialog box. You can determine whether this string exists in an enhanced metafile by retrieving the metafile header with the GetEnhMetaFileHeader function and examining one of its members. If the string exists, the application retrieves it by calling the GetEnhMetaFileDescription function.
You can retrieve the contents of a metafile by calling the GetEnhMetaFileBits function; however, before retrieving the contents, you must specify the size of the file. To get the size, you can use the GetEnhMetaFileHeader function and examine the appropriate member.
To achieve consistent colors when a picture is displayed on various output devices, you can call the CreatePalette function and store a logical palette in an enhanced metafile. An application that displays the picture stored in the enhanced metafile retrieves this palette and calls the RealizePalette function before displaying the picture. To determine whether a palette is stored in an enhanced metafile, retrieve the metafile header and examine the appropriate member. If a palette exists, you can call the GetEnhMetaFilePaletteEntries function to retrieve the logical palette.