DEVMODE結構
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方向的解析度,以每英寸點數為單位。
dmTTOption 指明如何列印TrueType字型。這個成員可以取如下值之一:
· DMTT_BITMAP 把TrueType字型作為圖形列印。這是點陣印表機的預設動作。
· DMTT_DOWNLOAD 將TrueType字型作為軟字型下載。這是使用印表機控制語言(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成員指定的。
請參閱:CDC::ResetDC, CPrintDialog::GetDevMode