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資料結構中包含了有關裝置初始化和印表機環境的資訊。
成員:
| 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成員可以被設為以下值之一:
| DMPAPER_LETTER |
letter, 8 1/2×1 英寸 |
| MPAPER_LEGAL |
Legal, 8 1/2×14 英寸 |
| DMPAPER_A4 |
A4 letter, 210×297 毫米 |
| DMPAPER_CSHEET |
C letter, 17×22 英寸 |
| DMPAPER_DSHEET |
D letter, 22×34 英寸 |
| DMPAPER_ESHEET |
E letter, 34×44 英寸 |
| DMPAPER_LETTERSMALL |
letter small, 8 1/2×11 英寸 |
| DMPAPER_TABLOID |
Tabloid, 11×17 英寸 |
| DMPAPER_LEDGER |
Ledger, 17×11 英寸 |
| DMPAPER_STATEMENT |
Statement, 5 1/2×8 1/2 英寸 |
| DMPAPER_EXECUTIVE |
Executive, 7 1/4×10 1/2 英寸 |
| DMPAPER_A3 |
A3 Sheet, 297×420 毫米 |
| DMPAPER_A4SMALL |
A4 Small Sheet, 210×297 毫米 |
| DMPAPER_A5 |
A5 Sheet, 148×210 毫米 |
| DMPAPER_B4 |
B4 Sheet, 250×354 毫米 |
| DMPAPER_B5 |
B5 Sheet, 182×257 毫米 |
| DMPAPER_FOLIO |
Folio, 8 1/2×13 英寸 |
| DMPAPER_QUARTO |
Quarto, 215×275 毫米 |
| DMPAPER_10X14 |
10×14 英寸 |
| DMPAPER_11X17 |
11×17 英寸 |
| DMPAPER_NOTE |
Note, 8 1/2×11 英寸 |
| DMPAPER_ENV_9 |
#9 EnVelope, 3 7/8×8 7/8 英寸 |
| DMPAPER_ENV_10 |
#10 EnVelope, 4 1/8×9 1/2 英寸 |
| DMPAPER_ENV_11 |
#11 EnVelope, 4 1/2×10 3/8 英寸 |
| DMPAPER_ENV_12 |
#12 EnVelope, 4 3/4×11 英寸 |
| DMPAPER_ENV_14 |
#14 EnVelope, 5×11 1/2 英寸 |
| DMPAPER_ENV_DL |
DL EnVelope, 110×220 毫米 |
| DMPAPER_ENV_C5 |
C5 EnVelope, 162×229 毫米 |
| DMPAPER_ENV_C3 |
C3 EnVelope, 324×458 毫米 |
| DMPAPER_ENV_C4 |
C4 EnVelope, 229×324 毫米 |
| DMPAPER_ENV_C6 |
C6 EnVelope, 114×162 毫米 |
| DMPAPER_ENV_C65 |
C65 EnVelope, 114×229 毫米 |
| DMPAPER_ENV_B4 |
B4 EnVelope, 250×353 毫米 |
| DMPAPER_ENV_B5 |
B5 EnVelope, 176×250 毫米 |
| DMPAPER_ENV_B6 |
B6 EnVelope, 176×125 毫米 |
| DMPAPER_ENV_ITALY |
Italy EnVelope, 110×230 毫米 |
| DMPAPER_ENV_MONARCH |
Monarch EnVelope, 3 7/8×7 1/2 英寸 |
| DMPAPER_ENV_PERSONAL |
6 3/4 EnVelope, 3 5/8×6 1/2 英寸 |
| DMPAPER_FANFOLD_US |
US Std Fanfold, 14 7/8×11 英寸 |
| DMPAPER_FANFOLD_STD_GERMAN |
German Std Fanfold, 8 1/2×12 英寸 |
| DMPAPER_FANFOLD_LGL_GERMAN |
German Legal Fanfold, 8 1/2×13 英寸 |
|
| 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方向的解析度,以DPI為單位。 |
| dmTTOption |
指明如何列印TrueType字型。這個成員可以取如下值之一:
| · |
DMTT_BITMAP |
把TrueType字型作為圖形列印。這是點陣印表機的預設動作。 |
| · |
DMTT_DOWNLOAD |
將TrueType字型作為可下載字型下載。這是使用Printer Control Language(PCL)的惠普印表機的預設動作。 |
| · |
DMTT_SUBDEV |
用TrueType字型替代裝置字型。這是PostScript系列印表機的預設動作。 |
|
| dmCollate |
指定在列印多份拷貝的時候是否使用校對。使用DMCOLLATE_FALSE後能夠得到更快更有效輸出,因為不管要列印多少份拷貝,只向印表機傳送一次資料。印表機僅被通知再列印一頁。這個成員可以是下列值之一:
| · |
DMCOLLATE_TRUE |
當列印多份拷貝時進行校對。 |
| · |
DMCOLLATE_FALSE |
當列印多份拷貝時不進行校對。 |
|
| dmFormName |
指定了要使用的格式名字。例如,Letter或Legal。這些名字的完整集合可以通過Windows的EnumForms函數獲得。 |
| dmUnusedPadding |
用於將結構對齊到DWORD邊界。不能使用或引用這個成員。它的名字和用法是保留的,在以後的版本中可能會變化。 |
| dmBitsPerPel |
指定了顯示裝置的顏色解析度,以像素的位元為單位。例如,16色使用4位,256色使用8位,而65536色使用16位。 |
| dmPelsWidth |
指定了可見裝置表面的以像素為單位的寬度。dmPelsHeight指定了可見裝置表面的以像素為單位的高度。 |
| dmDisplayFlags |
指定了裝置的顯示模式。下面是有效標誌:
| · |
DM_GRAYSCALE |
指定顯示使用了無顏色裝置。如果沒有設定這個標誌,就假定彩色模式。 |
| · |
DM_INTERLACED |
指定了隔行顯示模式。如果沒有設定這個標誌,就假定非隔行模式。 |
|
| dmDisplayFrequency |
指定了顯示裝置的特定模式所使用的以赫茲為單位的頻率(每秒的周期數)。 |
注釋:
在dmDisplayMode成員後面將是一些裝置驅動程式的私人資料。以位元組為單位的私人資料數目是由dmDriverExtra成員指定的。