Enhanced Metafile Operations
A developer creates an enhanced metafile by using the
CreateEnhMetaFile function and supplying the appropriate arguments. The Win32 API uses these
arguments to maintain picture dimensions, to determine whether the metafile
should be stored on a disk or in memory, and so on.
To maintain picture dimensions across output devices, the Win32 API requires
the resolution of the reference device. This
reference device is the device on which the picture first appeared, and the
reference DC is the DC associated with the reference device. When calling the
CreateEnhMetaFile function, the application must supply a handle that identifies this DC. The
application can get this handle by calling the
GetDC or
CreateDC function or specify NULL as the handle to use the current display device for
the reference device.
Most applications store pictures permanently and therefore create an enhanced
metafile that is stored on a disk; however, there are some instances when this
is not necessary. For example, a word-processing application that provides
chart-drawing capabilities could store a user-defined chart in memory as an
enhanced metafile and then copy the enhanced metafile bits from memory into the user's
document file. An application that requires a metafile that is stored
permanently on a disk must supply the filename when it calls the
CreateEnhMetaFile function. If the developer does not supply a filename, Windows automatically
treats the metafile as a temporary file and stores it in memory.
The developer can add an optional text description to a metafile containing
information about the picture and the author. An application can display these
strings in the File Open dialog box to provide the user with information about
metafile content that will help in selecting the appropriate file. If an
application includes the text description, the application must supply a pointer to the
string when it calls the
CreateEnhMetaFile function.
When the
CreateEnhMetaFile function is successful, it returns a handle that identifies a special
metafile DC. A metafile DC is unique in that it is associated with a file rather than
with an output device. When Windows processes a GDI function that received a
handle to a metafile DC, it converts the GDI function into an enhanced-metafile
record and appends the record to the end of the enhanced metafile.
After a picture is complete and the last record is appended to the enhanced
metafile, the application can close the file by calling the
CloseEnhMetaFile function. This function closes and deletes the special metafile DC and
returns a handle identifying the enhanced metafile. The application can use this
handle to accomplish the following tasks.
- Display the picture stored in the enhanced metafile.
- Create copies of the enhanced metafile.
- Enumerate, edit, or copy the individual records in the enhanced metafile.
- Retrieve the optional description that is stored in the enhanced metafile.
- Retrieve a copy of the enhanced-metafile header.
- Retrieve a binary version of the enhanced metafile.
- Enumerate the colors in the optional palette.
- Convert an enhanced-format metafile into a Windows-format metafile.
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.
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, a developer can use the
EnumEnhMetaFile function in combination with other Win32 functions to provide this capability
in your application. The
EnumEnhMetaFile function and its associated callback function 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. An application can
determine whether this string exists in an enhanced metafile by retrieving the
metafile header and examining one of its members. The
GetEnhMetaFileHeader function can retrieve the metafile header. If the string exists, the
application retrieves it by calling the
GetEnhMetaFileDescription function.
Some applications retrieve the contents of a metafile by calling the
GetEnhMetaFileBits function; however, before retrieving the contents, the application must
specify the size of the file. To get the size, the application can use the
GetEnhMetaFileHeader function and examine the appropriate member.
To achieve consistent colors when a picture is displayed on various output
devices, an application can call the
CreatePalette function and store a logical palette in an enhanced metafile. Other
applications that display the picture stored in the enhanced metafile retrieve this
palette and call the
RealizePalette function before displaying the picture. To determine whether a palette is
stored in an enhanced metafile, an application can retrieve the metafile header
and examine the appropriate member. If a palette exists, the application can call
the
GetEnhMetaFilePaletteEntries function to retrieve the logical palette.
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers
- More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
- Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database