DEVMODE数据结构包含有关设备初始化和打印机环境的信息。
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
DWORD dmICMIntent; //仅Windows 95
DWORD dmMediaType; //仅Windows 95
DWORD dmDitherType; //仅Windows 95
DWORD dmReserved1; //仅Windows 95
DWORD dmReserved2; //仅Windows 95
#endif /* WINVER >= 0x0400 */
} DEVMODE;
会员
dmDeviceName
指定打印机的“友好”名称;在PCL / HP LaserJet的情况下,例如“PCL / HP LaserJet”。该字符串在设备驱动程序中是唯一的。请注意,此名称可能会被截断以符合dmDeviceName数组。
dmSpecVersion
指定结构所基于的初始化数据规范的版本号。
dmDriverVersion
指定打印机驱动程序开发者分配的打印机驱动程序版本号。
dmsiz到
指定DEVMODE结构的大小(以字节为单位),不包括可能遵循结构公共成员的任何私有驱动程序特定的数据。您可以使用此成员来确定公共数据的字节数,而不管使用的DEVMODE结构的版本。
dmDriverExtra
包含跟随此结构的专用驱动程序数据的字节数。如果设备驱动程序不使用设备特定的信息,请将此成员设置为零。
dmFieldsnobg-Latn
一组位标志,指定DEVMODE结构的某些成员是否已初始化。如果一个字段被初始化,则其相应的位标志被置位,否则位标志清零。打印机驱动程序仅支持适合打印机技术的DEVMODE结构成员。
定义了以下位标志,并在此列出与相应的结构成员:
值 | 结构成员 |
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 | dmCollat?? ??ê |
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:dmICMMethod |
DM_ICMINTENT | 仅Windows 95:dmICMIntent |
DM_MEDIATYPE | 仅Windows 95:dmMediaType |
DM_DITHERTYPE | 仅Windows 95:dmDitherType |
dmOrientation
选择纸张的方向。该成员可以是DMORIENT_PORTRAIT(1)或DMORIENT_LANDSCAPE(2)。
dmPaperSize
选择要打印的纸张的大小。如果纸张的长度和宽度都由dmPaperLength和dmPaperWidth成员设置,则该成员可以设置为零。否则,可以将dmPaperSize成员设置为以下预定义值之一:
值 | 含义 |
DMPAPER_LETTER | 信,8 1 / 2-乘11英寸 |
DMPAPER_LEGAL | 法定,8 1 / 2-乘14英寸 |
DMPAPER_A4 | A4纸,210-297毫米 |
DMPAPER_CSHEET | C纸,17- 22寸 |
DMPAPER_DSHEET | 22张,34英寸 |
DMPAPER_ESHEET | E Sheet,34-44英寸 |
DMPAPER_LETTERSMALL | 字母小,8 1 / 2-乘11英寸 |
DMPAPER_TABLOID | 小报,11- 17英寸 |
DMPAPER_LEDGER | 分类帐,17英寸×11寸 |
DMPAPER_STATEMENT | 声明,5 1 / 2-乘8 1/2英寸 |
DMPAPER_EXECUTIVE | 执行,7 1 / 4-乘10 1/2英寸 |
DMPAPER_A3 | A3纸,297- 420毫米 |
DMPAPER_A4SMALL | A4小片,210-297毫米 |
DMPAPER_A5 | A5片,148- 210毫米 |
DMPAPER_B4 | B4纸,250-344毫米 |
DMPAPER_B5 | B5片,182-257毫米纸 |
DMPAPER_FOLIO | 对开,8 1 / 2- 13英寸纸 |
DMPAPER_QUARTO | Quarto,215-275毫米纸 |
DMPAPER_10X14 | 10到14英寸的纸张 |
DMPAPER_11X17 | 11英寸×17英寸的纸张 |
DMPAPER_NOTE | 注意,8 1 / 2-乘11英寸 |
DMPAPER_ENV_9 | #9信封,3 7 / 8-乘8 7/8英寸 |
DMPAPER_ENV_10 | #10信封,4 1 / 8-乘9 1/2英寸 |
DMPAPER_ENV_11 | #11信封,4 1 / 2-乘10 3/8英寸 |
DMPAPER_ENV_12 | #12信封,4 3 / 4-乘11英寸 |
DMPAPER_ENV_14 | #14信封,5-加11 1/2英寸 |
DMPAPER_ENV_DL | DL信封,110- 220毫米 |
DMPAPER_ENV_C5 | C5信封,162- 229毫米 |
DMPAPER_ENV_C3 | C3信封,324-458毫米 |
DMPAPER_ENV_C4 | C4信封,229-324毫米 |
DMPAPER_ENV_C6 | C6信封,114- 162毫米 |
DMPAPER_ENV_C65 | C65信封,114-292毫米 |
DMPAPER_ENV_B4 | B4信封,由250?353毫米 |
DMPAPER_ENV_B5 | B5信封,176- 250毫米 |
DMPAPER_ENV_B6 | B6信封,176-125毫米 |
DMPAPER_ENV_ITALY | 意大利信封,110 - 230毫米 |
DMPAPER_ENV_MONARCH | 君主信封,3 7 / 8-乘7 1/2英寸 |
DMPAPER_ENV_PERSONAL | 6 3/4信封,3 5 / 8-乘6 1/2英寸 |
DMPAPER_FANFOLD_US | 美国标准Fanfold,14 7 / 8-乘11英寸 |
DMPAPER_FANFOLD_STD_GERMAN | 德国标准Fanfold,8 1 / 2-乘12英寸 |
DMPAPER_FANFOLD_LGL_GERMAN | 德国Legal Fanfold,8 1 / 2-乘13英寸 |
dmPaperLength
覆盖由dmPaperSize成员指定的纸张的长度,用于自定义纸张尺寸或可以在任意长度的页面上打印的点阵式打印机等设备。这些值以及该结构中指定物理长度的所有其他值都在十分之一毫米。
dmPaperWidth
覆盖由dmPaperSize成员指定的纸张的宽度。
dmScale
指定要缩放打印输出的因子。明显的页面大小从物理页面大小缩放系数dmScale / 100。例如,dmScale值为50的字母大小的页面将包含与17-22英寸页面相同的数据,因为输出文本和图形将是其原始高度和宽度的一半。
dmCopies
如果设备支持多页复印,则选择打印份数。
dmDefaultSource
Reserved; must be zero.
dmPrintQuality
指定打印机分辨率。有四个预定义的与设备无关的值:
DMRES_HIGH
DMRES_MEDIUM
DMRES_LOW
DMRES_DRAFT
如果给出正值,它指定每英寸点数(DPI),因此与设备有关。
dmColor
在彩色打印机上切换彩色和单色。以下是可能的值:
DMCOLOR_COLOR
DMCOLOR_MONOCHROME
dmDuplex
为能够双面打印的打印机选择双面打印或双面打印。以下是可能的值:
DMDUP_SIMPLEX
DMDUP_HORIZONTAL
DMDUP_VERTICAL
dmYResolution
指定打印机的y分辨率(以英寸为单位)。如果打印机初始化此成员,则dmPrintQuality成员将以打印机的每英寸点数指定x分辨率。
dmTTOption
指定应如何打印TrueType字体。该成员可以是以下值之一:
值 | 含义 |
DMTT_BITMAP | 将TrueType字体打印为图形。这是点阵式打印机的默认动作。 |
DMTT_DOWNLOAD | 将TrueType字体下载为软字体。这是使用打印机控制语言(PCL)的Hewlett-Packard打印机的默认操作。 |
DMTT_SUBDEV | 替换TrueType字体的设备字体。这是PostScript打印机的默认操作。 |
dmUnusedPadding
用于将结构对齐到DWORD边界。这不应该被使用或引用。保留其名称和用法,并在将来的版本中更改。
dmCollat?? ??ê
指定打印多个副本时是否应使用归类。(除非打印机驱动程序通过将dmFieldsnobg-Latn成员设置为DM_COLLATE来指示排序规则,否则将忽略此成员。)该成员可以是以下值之一:
值 | 含义 |
DMCOLLATE_TRUE | 打印多份副本时整理。 |
DMCOLLATE_FALSE | 打印多份时不要整理。 |
使用DMCOLLATE_TRUE可以提供更快,更高效的排序规则输出,因为数据只发送到设备驱动程序一次,无论需要多少副本。该打印机被告知要再次打印页面。
dmFormName
Windows NT:指定要使用的表单的名称;例如“信”或“法定”。可以使用EnumForms功能检索一组完整的名称。
Windows 95:打印机驱动程序不使用此成员。
dmLogPixels
指定每个逻辑英寸的像素数。打印机驱动程序不使用此成员。
dmBitsPerPel
指定显示设备的颜色分辨率(以像素为单位)(例如:16种颜色为4位,256色为8位,65536色为16位)。显示驱动程序使用此成员,例如,在ChangeDisplaySettings功能中。打印机驱动程序不使用此成员。
dmPelsWidth
指定可见设备表面的宽度(以像素为单位)。显示驱动程序使用此成员,例如,在ChangeDisplaySettings功能中。打印机驱动程序不使用此成员。
dmPelsHeight
指定可见设备表面的高度(以像素为单位)。显示驱动程序使用此成员,例如,在ChangeDisplaySettings功能中。打印机驱动程序不使用此成员。
dmDisplayFlags
指定设备的显示模式。该成员可以是以下值之一:
值 | 含义 |
DM_GRAYSCALE | 指定显示器是非彩色设备。如果未设置此标志,则假定为颜色。 |
DM_INTERLACED | 指定显示模式是隔行扫描。如果未设置标志,则假定为非隔行扫描。 |
显示驱动程序使用此成员,例如,在ChangeDisplaySettings功能中。打印机驱动程序不使用此成员。
dmDisplayFrequency
以特定模式指定显示设备的频率,单位为赫兹(每秒的周期数)。该值也称为显示设备的垂直刷新率。显示驱动程序使用此成员。例如,它在ChangeDisplaySettings功能中使用。打印机驱动程序不使用此成员。
调用EnumDisplaySettings函数时,dmDisplayFrequency成员返回值为0或1。这些值表示显示硬件的默认刷新率。此默认速率通常由显示卡或计算机主板上的开关或不使用Win32显示功能的配置程序(如ChangeDisplaySettings)设置。
dmICMMethod
Windows 95:
指定如何处理ICM。对于非ICM应用程序,此成员确定ICM是启用还是禁用。对于ICM应用程序,Windows会检查此成员以确定如何处理ICM支持。该成员可以是以下预定义值之一,或大于DMICMMETHOD_USER的值的驱动程序定义值:
值 | 含义 |
DMICMMETHOD_NONE | 仅Windows 95:指定ICM被禁用。 |
DMICMMETHOD_SYSTEM | 仅Windows 95:指定ICM由Windows处理。 |
DMICMMETHOD_DRIVER | 仅Windows 95:指定ICM由设备驱动程序处理。 |
DMICMMETHOD_DEVICE | 仅Windows 95:指定ICM由目标设备处理。 |
打印机驱动程序必须提供用于设置此成员的用户界面。大多数打印机驱动程序仅支持DMICMMETHOD_SYSTEM或DMICMMETHOD_NONE值。PostScript打印机的驱动程序支持所有值。
Windows NT:
Windows NT上不支持此成员。
dmICMIntent
Windows 95:
指定默认情况下应使用三种可能的颜色匹配方法或意图中的哪一种。该成员主要用于非ICM应用程序。ICM应用程序可以通过使用ICM功能来建立意图。该成员可以是以下预定义值之一,或者大于DMICM_USER的值的驱动程序定义值:
值 | 含义 |
DMICM_SATURATE | 仅Windows 95:颜色匹配应优化色彩饱和度。当不希望进行抖动时,该值是商业图表中最合适的选择。 |
DMICM_CONTRAST | 仅Windows 95:颜色匹配应优化颜色对比度。当需要抖动时,该值是扫描或摄影图像最合适的选择。 |
DMICM_COLORMETRIC | 仅Windows 95:颜色匹配应优化以匹配所请求的确切颜色。当需要确切的颜色匹配时,此值最适合用于商业标志或其他图像。 |
Windows NT:
Windows NT上不支持此成员。
dmMediaType
Windows 95:
指定要打印的介质类型。该成员可以是以下预定义值之一,或者大于DMMEDIA_USER的值的驱动程序定义值:
值 | 含义 |
DMMEDIA_STANDARD | 仅Windows 95:普通纸。 |
DMMEDIA_GLOSSY | 仅Windows 95:光面纸。 |
DMMEDIA_TRANSPARENCY | 透明膜仅Windows 95: |
Windows NT:
Windows NT上不支持此成员。
dmDitherType
Windows 95:
指定如何进行抖动。该成员可以是以下预定义值之一,或者大于DMDITHER_USER的值的驱动程序定义值:
值 | 含义 |
DMDITHER_NONE | 仅Windows 95:没有抖动。 |
DMDITHER_COARSE | 仅Windows 95:使用粗刷进行抖动。 |
DMDITHER_FINE | 仅Windows 95:用精细的刷子进行抖动。 |
DMDITHER_LINEART | 仅Windows 95:线条艺术抖动,一种特殊的抖动方法,可在黑色,白色和灰色缩放之间产生明确的边界。它不适用于包含强烈连续刻度和色相(如扫描照片)的图像。 |
DMDITHER_GRAYSCALE | 仅Windows 95:设备执行灰度调整。 |
Windows NT:
Windows NT上不支持此成员。
dmReserved1
Windows 95:Not used; must be zero.
Windows NT: Windows NT上不支持此成员。
dmReserved2
Windows 95:Not used; must be zero.
Windows NT: Windows NT上不支持此成员。
备注
设备驱动程序的私有数据遵循DEVMODE结构的公开部分。对于不同版本的结构,公共数据的大小可能会有所不同。dmsiz到成员指定公共数据的字节数,dmDriverExtra成员指定私有数据的字节数。
也可以看看
AdvancedDocumentProperties, CreateDC, CreateIC, DeviceCapabilities, DocumentProperties, OpenPrinter