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
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
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
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