Overview
Group
Quick Info

Windows NT
Yes
Win95
Yes
Win32s
Yes
Import Library
-
Header File
wingdi.h
Unicode
WinNT
Platform Notes
None

DEVMODE

The DEVMODE data structure contains information about the device initialization and environment of a printer.

typedef struct _devicemode { // dvmd

BCHAR dmDeviceName[CCHDEVICENAME];

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;

BCHAR dmFormName[CCHFORMNAME];

WORD dmLogPixels;

DWORD dmBitsPerPel;

DWORD dmPelsWidth;

DWORD dmPelsHeight;

DWORD dmDisplayFlags;

DWORD dmDisplayFrequency;

#if(WINVER >= 0x0400)

DWORD dmICMMethod; // Windows 95 only

DWORD dmICMIntent; // Windows 95 only

DWORD dmMediaType; // Windows 95 only

DWORD dmDitherType; // Windows 95 only

DWORD dmReserved1; // Windows 95 only

DWORD dmReserved2; // Windows 95 only

#endif /* WINVER >= 0x0400 */

} DEVMODE;

Members

dmDeviceName

Specifies the the "friendly" name of the printer; for example, "PCL/HP LaserJet" in the case of PCL/HP LaserJet®. This string is unique among device drivers. Note that this name may be truncated to fit in the dmDeviceName array.

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, not including any private driver-specific data that might follow the structure's public members. You can use this member to determine the number of bytes of public data regardless of the version of the DEVMODE structure being used.

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

A set of bit flags that specify whether certain members of the DEVMODE structure have been initialized. If a field is initialized, its corresponding bit flag is set, otherwise the bit flag is clear. A printer driver supports only those DEVMODE structure members that are appropriate for the printer technology.

The following bit flags are defined, and are listed here with the corresponding structure members:

Value
Structure Member
DM_ORIENTATION
dmOrientation
DM_PAPERSIZE
dmPaperSize
DM_PAPERLENGTH
dmPaperLength
DM_PAPERWIDTH
dmPaperWidth
DM_SCALE
dmScale
DM_COPIES
dmCopies
DM_DEFAULTSOURCE
dmDefaultSource
DM_PRINTQUALITY
dmPrintQuality
DM_COLOR
dmColor
DM_DUPLEX
dmDuplex
DM_YRESOLUTION
dmYResolution
DM_TTOPTION
dmTTOption
DM_COLLATE
dmCollate
DM_FORMNAME
dmFormName
DM_LOGPIXELS
dmLogPixels
DM_BITSPERPEL
dmBitsPerPel
DM_PELSWIDTH
dmPelsWidth
DM_PELSHEIGHT
dmPelsHeight
DM_DISPLAYFLAGS
dmDisplayFlags
DM_DISPLAYFREQUENCY
dmDisplayFrequency
DM_ICMMETHOD
Windows 95 only: dmICMMethod
DM_ICMINTENT
Windows 95 only: dmICMIntent
DM_MEDIATYPE
Windows 95 only: dmMediaType
DM_DITHERTYPE
Windows 95 only: dmDitherType

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:

Value
Meaning
DMPAPER_LETTER
Letter, 8 1/2- by 11-inches
DMPAPER_LEGAL
Legal, 8 1/2- by 14-inches
DMPAPER_A4
A4 Sheet, 210- by 297-millimeters
DMPAPER_CSHEET
C Sheet, 17- by 22-inches
DMPAPER_DSHEET
D Sheet, 22- by 34-inches
DMPAPER_ESHEET
E Sheet, 34- by 44-inches
DMPAPER_LETTERSMALL
Letter Small, 8 1/2- by 11-inches
DMPAPER_TABLOID
Tabloid, 11- by 17-inches
DMPAPER_LEDGER
Ledger, 17- by 11-inches
DMPAPER_STATEMENT
Statement, 5 1/2- by 8 1/2-inches
DMPAPER_EXECUTIVE
Executive, 7 1/4- by 10 1/2-inches
DMPAPER_A3
A3 sheet, 297- by 420-millimeters
DMPAPER_A4SMALL
A4 small sheet, 210- by 297-millimeters
DMPAPER_A5
A5 sheet, 148- by 210-millimeters
DMPAPER_B4
B4 sheet, 250- by 354-millimeters
DMPAPER_B5
B5 sheet, 182- by 257-millimeter paper
DMPAPER_FOLIO
Folio, 8 1/2- by 13-inch paper
DMPAPER_QUARTO
Quarto, 215- by 275-millimeter paper
DMPAPER_10X14
10- by 14-inch sheet
DMPAPER_11X17
11- by 17-inch sheet
DMPAPER_NOTE
Note, 8 1/2- by 11-inches
DMPAPER_ENV_9
#9 Envelope, 3 7/8- by 8 7/8-inches
DMPAPER_ENV_10
#10 Envelope, 4 1/8- by 9 1/2-inches
DMPAPER_ENV_11
#11 Envelope, 4 1/2- by 10 3/8-inches
DMPAPER_ENV_12
#12 Envelope, 4 3/4- by 11-inches
DMPAPER_ENV_14
#14 Envelope, 5- by 11 1/2-inches
DMPAPER_ENV_DL
DL Envelope, 110- by 220-millimeters
DMPAPER_ENV_C5
C5 Envelope, 162- by 229-millimeters
DMPAPER_ENV_C3
C3 Envelope, 324- by 458-millimeters
DMPAPER_ENV_C4
C4 Envelope, 229- by 324-millimeters
DMPAPER_ENV_C6
C6 Envelope, 114- by 162-millimeters
DMPAPER_ENV_C65
C65 Envelope, 114- by 229-millimeters
DMPAPER_ENV_B4
B4 Envelope, 250- by 353-millimeters
DMPAPER_ENV_B5
B5 Envelope, 176- by 250-millimeters
DMPAPER_ENV_B6
B6 Envelope, 176- by 125-millimeters
DMPAPER_ENV_ITALY
Italy Envelope, 110- by 230-millimeters
DMPAPER_ENV_MONARCH
Monarch Envelope, 3 7/8- by 7 1/2-inches
DMPAPER_ENV_PERSONAL
6 3/4 Envelope, 3 5/8- by 6 1/2-inches
DMPAPER_FANFOLD_US
US Std Fanfold, 14 7/8- by 11-inches
DMPAPER_FANFOLD_STD_GERMAN
German Std Fanfold, 8 1/2- by 12-inches
DMPAPER_FANFOLD_LGL_GERMAN
German Legal Fanfold, 8 1/2- by 13-inches

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:

DMRES_HIGH
DMRES_MEDIUM
DMRES_LOW
DMRES_DRAFT

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:

DMCOLOR_COLOR
DMCOLOR_MONOCHROME

dmDuplex

Selects duplex or double-sided printing for printers capable of duplex printing. Following are the possible values:

DMDUP_SIMPLEX
DMDUP_HORIZONTAL
DMDUP_VERTICAL

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:

Value
Meaning
DMTT_BITMAP
Prints TrueType fonts as graphics. This is the default action for dot-matrix printers.
DMTT_DOWNLOAD
Downloads TrueType fonts as soft fonts. This is the default action for Hewlett-Packard printers that use Printer Control Language (PCL).
DMTT_SUBDEV
Substitute device fonts for TrueType fonts. This is the default action for PostScript® printers.

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.

dmCollate

Specifies whether collation should be used when printing multiple copies. (This member is ignored unless the printer driver indicates support for collation by setting the dmFields member to DM_COLLATE.) This member can be be one of the following values:

Value
Meaning
DMCOLLATE_TRUE
Collate when printing multiple copies.
DMCOLLATE_FALSE
Do not collate when printing multiple copies.

Using DMCOLLATE_TRUE provides faster, more efficient output for collation, since the data is sent to the device driver just once, no matter how many copies are required. The printer is told to simply print the page again.

dmFormName

Windows NT: Specifies the name of the form to use; for example, "Letter" or "Legal". A complete set of names can be retrieved by using the EnumForms function.

Windows 95: Printer drivers do not use this member.

dmLogPixels

Specifies the number of pixels per logical inch. Printer drivers do not use this member.

dmBitsPerPel

Specifies the color resolution, in bits per pixel, of the display device (for example: 4 bits for 16 colors, 8 bits for 256 colors, or 16 bits for 65536 colors). Display drivers use this member, for example, in the ChangeDisplaySettings function. Printer drivers do not use this member.

dmPelsWidth

Specifies the width, in pixels, of the visible device surface. Display drivers use this member, for example, in the ChangeDisplaySettings function. Printer drivers do not use this member.

dmPelsHeight

Specifies the height, in pixels, of the visible device surface. Display drivers use this member, for example, in the ChangeDisplaySettings function. Printer drivers do not use this member.

dmDisplayFlags

Specifies the device's display mode. This member can be one of the following values:

Value
Meaning
DM_GRAYSCALE
Specifies that the display is a noncolor device. If this flag is not set, color is assumed.
DM_INTERLACED
Specifies that the display mode is interlaced. If the flag is not set, noninterlaced is assumed.

Display drivers use this member, for example, in the ChangeDisplaySettings function. Printer drivers do not use this member.

dmDisplayFrequency

Specifies the frequency, in hertz (cycles per second), of the display device in a particular mode. This value is also known as the display device's vertical refresh rate. Display drivers use this member. It is used, for example, in the ChangeDisplaySettings function. Printer drivers do not use this member.

When you call the EnumDisplaySettings function, the dmDisplayFrequency member may return with the value 0 or 1. These values represent the display hardware's default refresh rate. This default rate is typically set by switches on a display card or computer motherboard, or by a configuration program that does not use Win32 display functions such as ChangeDisplaySettings.

dmICMMethod

Windows 95:

Specifies how ICM is handled. For a non-ICM application, this member determines if ICM is enabled or disabled. For ICM applications, Windows examines this member to determine how to handle ICM support. This member can be one of the following predefined values, or a driver-defined value greater than the value of DMICMMETHOD_USER:

Value
Meaning
DMICMMETHOD_NONE
Windows 95 only: Specifies that ICM is disabled.
DMICMMETHOD_SYSTEM
Windows 95 only: Specifies that ICM is handled by Windows.
DMICMMETHOD_DRIVER
Windows 95 only: Specifies that ICM is handled by the device driver.
DMICMMETHOD_DEVICE
Windows 95 only: Specifies that ICM is handled by the destination device.

The printer driver must provide a user interface for setting this member. Most printer drivers support only the DMICMMETHOD_SYSTEM or DMICMMETHOD_NONE value. Drivers for PostScript printers support all values.

Windows NT:

This member is not supported on Windows NT.

dmICMIntent

Windows 95:

Specifies which of the three possible color matching methods, or intents, should be used by default. This member is primarily for non-ICM applications. ICM applications can establish intents by using the ICM functions. This member can be one of the following predefined values, or a driver defined value greater than the value of DMICM_USER:

Value
Meaning
DMICM_SATURATE
Windows 95 only: Color matching should optimize for color saturation. This value is the most appropriate choice for business graphs when dithering is not desired.
DMICM_CONTRAST
Windows 95 only: Color matching should optimize for color contrast. This value is the most appropriate choice for scanned or photographic images when dithering is desired.
DMICM_COLORMETRIC
Windows 95 only: Color matching should optimize to match the exact color requested. This value is most appropriate for use with business logos or other images when an exact color match is desired.

Windows NT:

This member is not supported on Windows NT.

dmMediaType

Windows 95:

Specifies the type of media being printed on. The member can be one of the following predefined values, or a driver-defined value greater than the value of DMMEDIA_USER:

Value
Meaning
DMMEDIA_STANDARD
Windows 95 only: Plain paper.
DMMEDIA_GLOSSY
Windows 95 only: Glossy paper.
DMMEDIA_TRANSPARENCY
Windows 95 only: Transparent film.

Windows NT:

This member is not supported on Windows NT.

dmDitherType

Windows 95:

Specifies how dithering is to be done. The member can be one of the following predefined values, or a driver-defined value greater than the value of DMDITHER_USER:

Value
Meaning
DMDITHER_NONE
Windows 95 only: No dithering.
DMDITHER_COARSE
Windows 95 only: Dithering with a coarse brush.
DMDITHER_FINE
Windows 95 only: Dithering with a fine brush.
DMDITHER_LINEART
Windows 95 only: Line art dithering, a special dithering method that produces well defined borders between black, white, and gray scalings. It is not suitable for images that include continuous graduations in intensisty and hue such as scanned photographs.
DMDITHER_GRAYSCALE
Windows 95 only: Device does grayscaling.

Windows NT:

This member is not supported on Windows NT.

dmReserved1

Windows 95: Not used; must be zero.

Windows NT: This member is not supported on Windows NT.

dmReserved2

Windows 95: Not used; must be zero.

Windows NT: This member is not supported on Windows NT.

Remarks

A device driver's private data follows the public portion of the DEVMODE structure. The size of the public data can vary for different versions of the structure. The dmSize member specifies the number of bytes of public data, and the dmDriverExtra member specifies the number of bytes of private data.

See Also

AdvancedDocumentProperties
, CreateDC, CreateIC, DeviceCapabilities, DocumentProperties, OpenPrinter

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