DEVMODE结构具有如下形式:
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;
DEVMODE数据结构中包含了有关设备初始化和打印机环境的信息。
成员:
注释:
在dmDisplayMode成员后面将是一些设备驱动程序的私有数据。以字节为单位的私有数据数目是由dmDriverExtra成员指定的。
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;
DEVMODE数据结构中包含了有关设备初始化和打印机环境的信息。
成员:
dmDeviceName | 指定了驱动程序支持的设备名称;例如,对于PCL/HP LaserJet系列,会是CL/HP激光打印机。这个字符串在设备驱动程序之间是相互不同的。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmSpecVersion | 指定了初始化数据的版本数字,这个结构就基于这些数据。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmDriverVersion | 指定了打印机驱动程序开发商分配的打印机驱动程序版本号。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmSize | 指定了DEVMODE结构的大小,以字节为单位,不包括dmDriverData(与设备有关)成员。如果应用程序仅操作数据中与驱动程序无关的部分,它就可以使用这个成员以确定该结构的长度,而并不需要有不同版本的记录。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmDriverExtra | 包含了这个结构后面的私有驱动程序数据的数目,以字节为单位。如果设备驱动程序不使用该设备独有的信息,就把这个成员设为零。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmFields | 指定了DEVMODE结构的其余成员中哪些已被初始化。第0位(定义为DM)ORIENTATION)代表dmOrientation,第1位(定义为DM_PAPERSIZE)代表dmPaperSize等等。打印机驱动出现仅支持那些适合打印技术的成员。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmOrientation | 选择纸的方向。这个成员可以为DMORIENT_PORTRAIT(1)或DMORIENT_ LANDSCAPE(2)。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmPaperSize | 选择将用于打印的纸张大小。如果纸张的长度和宽度都用dmPaperLength和dmPaperWidth成员来设置的话,这个成员可以被设为0。否则,dwPaperSize成员可以被设为以下值之一:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmPaperLength | 重定义由dmPaperSize成员指定的纸张长度,可用于自定义纸张大小,也可以用于点阵打印机,这种打印机能打出任意长度的纸张。这些值与这个结构中其他指定物理长度的值都是以0.1毫米为单位的。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmPaperWidth | 重载由dmPaperSize成员指定的纸张宽度。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmScale | 指定了打印输出的缩放因子。实际的页面大小为物理纸张的大小乘以dmScale/100。例如,对于信纸大小的纸张,如果dmScale的值为50,它将可以容纳相当于17×22英寸页面的内容,因为输出的文本和图形的宽、高都将是原始大小的一半。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmCopies | 如果设备支持多页拷贝,则选择了要打印的拷贝数目。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmDefaultSource | 保留,必须为0。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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字体。这个成员可以取如下值之一:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmCollate | 指定在打印多份拷贝的时候是否使用校对。使用DMCOLLATE_FALSE后能够得到更快更有效的输出,因为不管要打印多少份拷贝,只向打印机传送一次数据。打印机仅被通知再打印一页。这个成员可以是下列值之一:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmFormName | 指定了要使用的格式名字。例如,Letter或Legal。这些名字的完整集合可以通过Windows的EnumForms函数获得。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmUnusedPadding | 用于将结构对齐到DWORD边界。不能使用或引用这个成员。它的名字和用法是保留的,在以后的版本中可能会变化。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmBitsPerPel | 指定了显示设备的颜色分辨率,以像素的位数为单位。例如,16色使用4位,256色使用8位,而65536色使用16位。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmPelsWidth | 指定了可见设备表面的以像素为单位的宽度。dmPelsHeight指定了可见设备表面的以像素为单位的高度。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmDisplayFlags | 指定了设备的显示模式。下面是有效的标志:
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dmDisplayFrequency | 指定了显示设备的特定模式所使用的以赫兹为单位的频率(每秒的周期数)。 |
注释:
在dmDisplayMode成员后面将是一些设备驱动程序的私有数据。以字节为单位的私有数据数目是由dmDriverExtra成员指定的。