The DEVMODE structure has the following form:
typedef struct _devicemode { /* dvmd */
TCHAR dmDeviceName[32];
WORD dmSpecVersion;
WORD dmDriverVersion;
WORD dmSize;
WORD dmDriverExtra;
DWORD dmFields;
short dmOrientation;
short dmPaperSize;
short dmPaperLength;
short dmPaperWidth;
short dmScale;
short dmCopies;
short dmDefaultSource;
short dmPrintQuality;
short dmColor;
short dmDuplex;
short dmYResolution;
short dmTTOption;
short dmCollate;
TCHAR dmFormName[32];
WORD dmUnusedPadding;
USHORT dmBitsPerPel;
DWORD dmPelsWidth;
DWORD dmPelsHeight;
DWORD dmDisplayFlags;
DWORD dmDisplayFrequency;
} DEVMODE;
The DEVMODE data structure contains information about the device initialization and environment of a printer.
Members
dmDeviceName
Specifies the name of the device the driver supports; for example, PCL/HP LaserJet in the case of PCL/HP LaserJet®. This string is unique among device drivers.
dmSpecVersion
Specifies the version number of the initialization data specification on which the structure is based.
dmDriverVersion
Specifies the printer driver version number assigned by the printer driver developer.
dmSize
Specifies the size, in bytes, of the DEVMODE structure except the dmDriverData (device-specific) member. If an application manipulates only the driver-independent portion of the data, it can use this member to determine the length of the structure without having to account for different versions.
dmDriverExtra
Contains the number of bytes of private driver-data that follow this structure. If a device driver does not use device-specific information, set this member to zero.
dmFields
Specifies which of the remaining members in the DEVMODE structure have been initialized. Bit 0 (defined as DM_ORIENTATION) corresponds to dmOrientation; bit 1 (defined as DM_PAPERSIZE) specifies dmPaperSize, and so on. A printer driver supports only those members that are appropriate for the printer technology.
dmOrientation
Selects the orientation of the paper. This member can be either DMORIENT_PORTRAIT (1) or DMORIENT_LANDSCAPE (2).
dmPaperSize
Selects the size of the paper to print on. This member can be set to zero if the length and width of the paper are both set by the dmPaperLength and dmPaperWidth members. Otherwise, the dmPaperSize member can be set to one of the following predefined values:
dmPaperLength
Overrides the length of the paper specified by the dmPaperSize member, either for custom paper sizes or for devices such as dot-matrix printers, which can print on a page of arbitrary length. These values, along with all other values in this structure that specify a physical length, are in tenths of a millimeter.
dmPaperWidth
Overrides the width of the paper specified by the dmPaperSize member.
dmScale
Specifies the factor by which the printed output is to be scaled. The apparent page size is scaled from the physical page size by a factor of dmScale/100. For example, a letter-sized page with a dmScale value of 50 would contain as much data as a page of 17 by 22 inches because the output text and graphics would be half their original height and width.
dmCopies
Selects the number of copies printed if the device supports multiple-page copies.
dmDefaultSource
Reserved; must be zero.
dmPrintQuality
Specifies the printer resolution. There are four predefined device-independent values:
If a positive value is given, it specifies the number of dots per inch (DPI) and is therefore device dependent.
dmColor
Switches between color and monochrome on color printers. Following are the possible values:
dmDuplex
Selects duplex or double-sided printing for printers capable of duplex printing. Following are the possible values:
dmYResolution
Specifies the y-resolution, in dots per inch, of the printer. If the printer initializes this member, the dmPrintQuality member specifies the x-resolution, in dots per inch, of the printer.
dmTTOption
Specifies how TrueType® fonts should be printed. This member can be one of the following values:
dmCollate
Specifies whether collation should be used when printing multiple copies. Using DMCOLLATE_FALSE provides faster, more efficient output, since the data is sent to a page printer just once, no matter how many copies are required. The printer is told to simply print the page again. This member can be be one of the following values:
dmFormName
Specifies the name of the form to use; for example, Letter or Legal. A complete set of names can be retrieved through the Windows EnumForms function.
dmUnusedPadding
Used to align the structure to a DWORD boundary. This should not be used or referenced. Its name and usage is reserved, and can change in future releases.
dmBitsPerPel
Specifies in bits per pixel the color resolution of the display device. For example: 4 bits for 16 colors, 8 bits for 256 colors, or 16 bits for 65,536 colors.
dmPelsWidth
Specifies the width, in pixels, of the visible device surface.
dmPelsHeight
Specifies the height, in pixels, of the visible device surface.
dmDisplayFlags
Specifies the device’s display mode. The following are valid flags:
dmDisplayFrequency
Specifies the frequency, in hertz (cycles per second), of the display device in a particular mode.
Comments
A device driver’s private data will follow the dmDisplayMode member. The number of bytes of private data is specified by the dmDriverExtra member.
See Also CDC::ResetDC, CPrintDialog::GetDevMode