複製鏈接
請複製以下鏈接發送給好友

DEVMODE

鎖定
DEVMODE數據結構中包含了有關設備初始化和打印機環境的信息。
外文名
DEVMODE
包含信息
設備初始化和打印機環境
使用環境
計算機
其他詳情
見註釋
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 紙張來源。
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