Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Структура DEVMODEW используется для указания характеристик устройств отображения и печати в наборе символов Юникода (широкий).
Синтаксис
typedef struct _devicemodeW {
WCHAR dmDeviceName[CCHDEVICENAME];
WORD dmSpecVersion;
WORD dmDriverVersion;
WORD dmSize;
WORD dmDriverExtra;
DWORD dmFields;
union {
struct {
short dmOrientation;
short dmPaperSize;
short dmPaperLength;
short dmPaperWidth;
short dmScale;
short dmCopies;
short dmDefaultSource;
short dmPrintQuality;
} DUMMYSTRUCTNAME;
POINTL dmPosition;
struct {
POINTL dmPosition;
DWORD dmDisplayOrientation;
DWORD dmDisplayFixedOutput;
} DUMMYSTRUCTNAME2;
} DUMMYUNIONNAME;
short dmColor;
short dmDuplex;
short dmYResolution;
short dmTTOption;
short dmCollate;
WCHAR dmFormName[CCHFORMNAME];
WORD dmLogPixels;
DWORD dmBitsPerPel;
DWORD dmPelsWidth;
DWORD dmPelsHeight;
union {
DWORD dmDisplayFlags;
DWORD dmNup;
} DUMMYUNIONNAME2;
DWORD dmDisplayFrequency;
DWORD dmICMMethod;
DWORD dmICMIntent;
DWORD dmMediaType;
DWORD dmDitherType;
DWORD dmReserved1;
DWORD dmReserved2;
DWORD dmPanningWidth;
DWORD dmPanningHeight;
} DEVMODEW, *PDEVMODEW, *NPDEVMODEW, *LPDEVMODEW;
Члены
dmDeviceName[CCHDEVICENAME]
Для отображения указывает имя библиотеки DLL драйвера отображения; Например, "perm3dd" для драйвера отображения 3Dlabs Permedia3.
Для принтера указывает понятное имя; Например, "PCL/HP LaserJet" в случае PCL/HP LaserJet. Если имя больше символов CCHDEVICENAME в длину, spooler усечено его, чтобы поместить его в массив.
dmSpecVersion
Указывает номер версии этой структуры DEVMODEW. Текущий номер версии определяется константой DM_SPECVERSION в wingdi.h.
dmDriverVersion
Для принтера указывает номер версии драйвера принтера, назначенный разработчиком драйвера принтера.
Отображение драйверов может задать для этого элемента значение DM_SPECVERSION.
dmSize
Задает размер в байтах общедоступной структуры DEVMODEW, не включая частных, указанных драйвером членов, определяемых членом dmDriverExtra .
dmDriverExtra
Указывает количество байтов данных частного драйвера, следовать элементам общедоступной структуры. Если драйвер устройства не предоставляет частные члены DEVMODEW, этот элемент должен иметь значение нулю.
dmFields
Указывает битовые флаги, определяющие, какие из следующих элементов DEVMODEW используются. Например, флаг DM_ORIENTATION задается, если член dmOrientation содержит допустимые данные. Флаги DM_XXX определены в wingdi.h.
DUMMYUNIONNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmOrientation
Для принтеров указывает ориентацию бумаги. Этот элемент может быть либо DMORIENT_PORTRAIT, либо DMORIENT_LANDSCAPE.
Этот элемент не используется для отображения.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperSize
Для принтеров указывает размер бумаги, на котором должна быть напечатана. Этот элемент должен быть равен нулю, если длина и ширина бумаги указаны элементами dmPaperLength и dmPaperWidth . В противном случае элемент dmPaperSize должен быть одним из префиксированных констант DMPAPER, определенных в wingdi.h.
Этот элемент не используется для отображения.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperLength
Для принтеров указывает длину бумаги в единицах 1/10 миллиметра. Это значение переопределяет длину бумаги, указанной членом dmPaperSize , и используется, если бумага имеет настраиваемый размер, или если устройство является точечным принтером матрицы, который может распечатать страницу произвольной длины.
Этот элемент не используется для отображения.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperWidth
Для принтеров указывает ширину бумаги в единицах 1/10 миллиметра. Это значение переопределяет ширину бумаги, указанной членом dmPaperSize . Этот элемент должен использоваться, если используется dmPaperLength .
Этот элемент не используется для отображения.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmScale
Для принтеров указывает процент масштабирования изображения для печати. Размер страницы изображения масштабируется на физическую страницу по коэффициенту dmScale/100. Например, 17-дюймовое изображение размером 22 дюйма с масштабируемым значением 100 требует 17x22-дюймовой бумаги, в то время как то же изображение со значением шкалы 50 должно печатать как половину размера и поместиться на бумаге размером буквы.
Этот элемент не используется для отображения.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmCopies
Для принтеров указывает количество копий, которые нужно распечатать, если устройство поддерживает несколько копий.
Этот элемент не используется для отображения.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmDefaultSource
Для принтеров задает входной контейнер принтера по умолчанию. Это должна быть одна из префиксированных констант DMBIN, определенных в wingdi.h. Если указанная константа DMBIN_FORMSOURCE, входная ячейка должна быть выбрана автоматически.
Этот элемент не используется для отображения.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPrintQuality
Для принтеров указывает разрешение принтера. Следующие отрицательные значения констант определяются в wingdi.h:
- DMRES_HIGH
- DMRES_MEDIUM
- DMRES_LOW
- DMRES_DRAFT
Если указано положительное значение, оно представляет число точек на дюйм (DPI) для разрешения x , а разрешение y указывается dmYResolution.
Этот элемент не используется для отображения.
DUMMYUNIONNAME.dmPosition
DUMMYUNIONNAME.DUMMYSTRUCTNAME2
DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmPosition
Для отображения указывает структуру POINTL , содержащую координаты x-и y левого верхнего угла дисплея в координатах рабочего стола. Этот элемент используется для определения относительного положения мониторов в среде с несколькими мониторами.
Этот элемент не используется для принтеров.
DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayOrientation
Этот элемент определен только для Windows XP и более поздних версий.
Для отображения указывает ориентацию, в которой должны быть представлены изображения. Если DM_DISPLAYORIENTATION бит не задан в элементе dmFields , этот элемент должен быть равен нулю. Если DM_DISPLAYORIENTATION бит задан в элементе dmFields , этот элемент должен иметь одно из следующих значений:
| Ценность | Значение |
|---|---|
| DMDO_DEFAULT | Ориентация устройства в текущем режиме является естественной ориентацией устройства и должна использоваться в качестве значения по умолчанию. |
| DMDO_90 | Ориентация устройства отображения составляет 90 градусов (измеряемая по часовой стрелке) от DMDO_DEFAULT. |
| DMDO_180 | Ориентация устройства отображения составляет 180 градусов (измеряемая по часовой стрелке) от DMDO_DEFAULT. |
| DMDO_270 | Ориентация устройства отображения составляет 270 градусов (измеряемая по часовой стрелке) от DMDO_DEFAULT. |
Этот элемент не используется для принтеров.
Дополнительные сведения см. в разделе "Возвращающие режимы отображения": DrvGetModes.
DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayFixedOutput
Этот элемент определен только для Windows XP и более поздних версий.
Для отображения фиксированного разрешения указывает, как устройство может представить режим нижнего разрешения на дисплее с более высоким разрешением. Например, если разрешение устройства отображения исправлено в 1024 X 768, а его режим имеет значение 640 x 480, устройство может отобразить изображение 640 X 480 в пространстве экрана 1024 X 768 или растянуть изображение 640 X 480, чтобы заполнить большее пространство экрана.
Если DM_DISPLAYFIXEDOUTPUT бит не задан в члене dmFields , этот элемент должен быть равен нулю. Если в элементе dmFields задан DM_DISPLAYFIXEDOUTPUT бит, этот элемент должен иметь одно из следующих значений:
| Ценность | Значение |
|---|---|
| DMDFO_CENTER | Устройство отображения представляет изображение режима нижнего разрешения, поцентрируя его в большем пространстве экрана. |
| DMDFO_STRETCH | Устройство отображения представляет изображение режима нижнего разрешения, растягивая его, чтобы заполнить большее пространство экрана. |
Этот элемент не используется для принтеров.
Дополнительные сведения см. в разделе "Возвращающие режимы отображения": DrvGetModes.
dmColor
Для принтеров указывает, должен ли цвет принтера печатать цвет или монохром. Этот элемент может быть одним из DMCOLOR_COLOR или DMCOLOR_MONOCHROME.
Этот элемент не используется для отображения.
dmDuplex
Для принтеров задает двустороннюю печать для дуплексных принтеров. Этот элемент может быть одним из следующих значений:
DMDUP_HORIZONTAL
Печать двойной границы с помощью короткой пограничной привязки.
DMDUP_SIMPLEX
Печать односторонняя.
DMDUP_VERTICAL
Печать двойной стороны с помощью длинной пограничной привязки.
Этот элемент не используется для отображения.
dmYResolution
Для принтеров указывает разрешение y принтера в DPI. Если этот элемент используется, элемент dmPrintQuality указывает разрешение x .
Этот элемент не используется для отображения.
dmTTOption
Для принтеров указывает, как следует распечатать шрифты TrueType. Этот элемент должен быть одним из префиксированных dmTT-префиксов, определенных в wingdi.h.
Этот элемент не используется для отображения.
dmCollate
Для принтеров указывает, следует ли сворачению нескольких копий. Этот элемент может быть одним из следующих значений:
DMCOLLATE_TRUE
Сортировка при печати нескольких копий.
DMCOLLATE_FALSE
Не сопоставляйте параметры при печати нескольких копий.
Этот элемент не используется для отображения.
dmFormName[CCHFORMNAME]
Для принтеров указывает имя используемой формы; например "Письмо" или "Юридическое". Это должно быть имя, которое можно получить, вызвав функцию Win32 EnumForms .
Этот элемент не используется для отображения.
dmLogPixels
Для отображения указывает количество логических пикселей на дюйм устройства отображения и должно быть равно члену ulLogPixels структуры GDIINFO .
Этот элемент не используется для принтеров.
dmBitsPerPel
Для отображения указывает разрешение цвета (в битах на пиксель) устройства отображения.
Этот элемент не используется для принтеров.
dmPelsWidth
Для отображения указывает ширину (в пикселях) видимой поверхности устройства.
Этот элемент не используется для принтеров.
dmPelsHeight
Для отображения указывает высоту (в пикселях) видимой поверхности устройства.
Этот элемент не используется для принтеров.
DUMMYUNIONNAME2
DUMMYUNIONNAME2.dmDisplayFlags
Указывает режим отображения устройства. Этот элемент может быть сочетанием следующих значений.
| Ценность | Значение |
|---|---|
| DM_GRAYSCALE | Указывает, что дисплей является некрасивным устройством. Если этот флаг не задан, предполагается цвет. Этот флаг больше недействителен. |
| DM_INTERLACED | Указывает, что режим отображения переплетается. Если флаг не задан, предполагается, что он не задан. |
Отображение драйверов использует этот элемент; например, в функции ChangeDisplaySettings . Драйверы принтера не используют этот элемент.
DUMMYUNIONNAME2.dmNup
Для принтеров указывает, обрабатывает ли система печати печать "N-up" (воспроизведение нескольких логических страниц EMF на одну физическую страницу). Значение этого элемента может быть одним из следующих:
| Ценность | Значение |
|---|---|
| DMNUP_SYSTEM | Система печати обрабатывает печать "N-up". |
| DMNUP_ONEUP | Система печати не обрабатывает печать "N-up". Приложение может настроить dmNup на DMNUP_ONEUP если он намерен самостоятельно выполнять печать "N-up". |
Этот элемент не используется для отображения.
dmDisplayFrequency
Для отображения указывает частоту (в герц) устройства отображения в текущем режиме.
Этот элемент не используется для принтеров.
dmICMMethod
Указывает одну из констант DMICMMETHOD, префиксированных в wingdi.h.
dmICMIntent
Указывает одну из констант DMICM, заданных в wingdi.h.
dmMediaType
Указывает одну из констант dmMEDIA, префиксированных в wingdi.h.
dmDitherType
Указывает одну из констант DMDITHER, заданных в wingdi.h.
dmReserved1
Зарезервирован для использования системы и должен игнорироваться драйвером.
dmReserved2
Зарезервирован для использования системы и должен игнорироваться драйвером.
dmPanningWidth
Зарезервирован для использования системы и должен игнорироваться драйвером.
dmPanningHeight
Зарезервирован для использования системы и должен игнорироваться драйвером.
Замечания
Структура DEVMODEW — это версия структуры DEVMODE Юникода (описанная в документации по пакету SDK для Microsoft Windows). Хотя приложения могут использовать версию ANSI или Юникод структуры, драйверы должны использовать версию Юникода.
Для драйверов принтера структура DEVMODEW используется для указания характеристик принтера, необходимых документу печати. Он также используется для указания характеристик принтера по умолчанию.
Сразу после определенных элементов структуры DEVMODEW (часто называемых его общедоступными членами), может быть набор определяемых драйвером элементов (часто называемых частными элементами DEVMODEW). Драйвер предоставляет размер в байтах этой частной области в dmDriverExtra. Определяемые драйвером частные члены предназначены для эксклюзивного использования драйвером. Начальный адрес для частных членов можно ссылаться с помощью члена dmSize следующим образом:
PVOID pvDriverData = (PVOID) (((BYTE *) pdm) + (pdm->dmSize));
Драйвер может полагаться на spooler для передачи буфера DEVMODEW, который не меньше байтов (dmSize + dmDriverExtra). В результате драйвер может безопасно считывать это количество байтов, начиная с начала буфера, не вызывая нарушения доступа и не требуя проверки памяти.
Перед воспроизведением EMF GDI вызывает spooler для проверки содержимого общедоступной части буфера DEVMODEW. Если буфер DEVMODEW не передает тесты проверки, выполненные в spooler, GDI не передает буфер на драйвер принтера.
В Windows XP добавлен новый элемент структуры . Этот элемент структуры содержит существующий элемент структуры DEVMODEW, dmPosition, вместе с двумя новыми членами, dmDisplayOrientation и dmDisplayFixedOutput. Эти члены описаны в предыдущем разделе "Члены".
Кроме того, для Windows XP несколько членов структуры DEVMODEW были перемещены в разные расположения в этой структуре. К члену структуры были добавлены члены dmScale, dmCopies, dmDefaultSource и dmPrintQuality, содержащие dmOrientation, dmPaperSize, dmPaperLength и dmPaperWidth.
Замечание
Заголовок wingdi.h определяет DEVMODE как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
| Требование | Ценность |
|---|---|
| Заголовок | wingdi.h (include Wingdi.h) |