Estructura DEVMODEW (wingdi.h)
La estructura DEVMODEW se usa para especificar características de los dispositivos de visualización e impresión en el juego de caracteres Unicode (ancho).
Sintaxis
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;
Miembros
dmDeviceName[CCHDEVICENAME]
Para una presentación, especifica el nombre del archivo DLL del controlador para mostrar; por ejemplo, "perm3dd" para el controlador de pantalla 3Dlabs Permedia3.
Para una impresora, especifica el "nombre descriptivo"; por ejemplo, "PCL/HP LaserJet" en el caso de PCL/HP LaserJet. Si el nombre es mayor que los caracteres CCHDEVICENAME de longitud, el administrador de colas lo trunca para que se ajuste a la matriz.
dmSpecVersion
Especifica el número de versión de esta estructura DEVMODEW. El número de versión actual se identifica mediante la constante DM_SPECVERSION en wingdi.h.
dmDriverVersion
Para una impresora, especifica el número de versión del controlador de impresora asignado por el desarrollador del controlador de impresora.
Los controladores de pantalla pueden establecer este miembro en DM_SPECVERSION.
dmSize
Especifica el tamaño en bytes de la estructura PÚBLICA DEVMODEW, sin incluir ningún miembro privado especificado por el controlador identificado por el miembro dmDriverExtra.
dmDriverExtra
Especifica el número de bytes de datos del controlador privado que siguen a los miembros de la estructura pública. Si un controlador de dispositivo no proporciona miembros PRIVADOS DEVMODEW, este miembro debe establecerse en cero.
dmFields
Especifica las marcas de bits que identifican cuáles de los siguientes miembros DEVMODEW están en uso. Por ejemplo, la marca DM_ORIENTATION se establece cuando el miembro dmOrientation contiene datos válidos. Las marcas de DM_XXX se definen en wingdi.h.
DUMMYUNIONNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmOrientation
Para las impresoras, especifica la orientación del papel. Este miembro puede ser DMORIENT_PORTRAIT o DMORIENT_LANDSCAPE.
Este miembro no se usa para las pantallas.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperSize
Para las impresoras, especifica el tamaño del papel en el que se va a imprimir. Este miembro debe ser cero si la longitud y el ancho del papel se especifican mediante el dmPaperLength
Este miembro no se usa para las pantallas.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperLength
Para impresoras, especifica la longitud del papel, en unidades de 1/10 de un milímetro. Este valor invalida la longitud del papel especificado por el dmPaperSize miembro, y se usa si el papel es de un tamaño personalizado, o si el dispositivo es una impresora de matriz de puntos, que puede imprimir una página de longitud arbitraria.
Este miembro no se usa para las pantallas.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperWidth
Para impresoras, especifica el ancho del papel, en unidades de 1/10 de un milímetro. Este valor invalida el ancho del papel especificado por el miembro dmPaperSize. Este miembro debe usarse si se usa dmPaperLength.
Este miembro no se usa para las pantallas.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmScale
Para las impresoras, especifica el porcentaje por el que se va a escalar la imagen para imprimir. El tamaño de página de la imagen se escala a la página física por un factor de dmScale/100. Por ejemplo, una imagen de 17 pulgadas por 22 pulgadas con un valor de escala de 100 requiere papel de 17 x 22 pulgadas, mientras que la misma imagen con un valor de escala de 50 debe imprimirse de tamaño medio y caber en papel de tamaño carta.
Este miembro no se usa para las pantallas.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmCopies
En el caso de las impresoras, especifica el número de copias que se van a imprimir, si el dispositivo admite varias copias.
Este miembro no se usa para las pantallas.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmDefaultSource
Para las impresoras, especifica la bandeja de entrada predeterminada de la impresora. Debe ser una de las constantes con prefijo DMBIN definidas en wingdi.h. Si la constante especificada es DMBIN_FORMSOURCE, el contenedor de entrada debe seleccionarse automáticamente.
Este miembro no se usa para las pantallas.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPrintQuality
Para las impresoras, especifica la resolución de la impresora. Los siguientes valores constantes negativos se definen en wingdi.h:
- DMRES_HIGH
- DMRES_MEDIUM
- DMRES_LOW
- DMRES_DRAFT
Si se especifica un valor positivo, representa el número de puntos por pulgada (PPP) para la resolución de x y la resolución y se especifica mediante dmYResolution.
Este miembro no se usa para las pantallas.
DUMMYUNIONNAME.dmPosition
DUMMYUNIONNAME.DUMMYSTRUCTNAME2
DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmPosition
Para las pantallas, especifica una estructura POINTL que contiene las coordenadas x e y de la esquina superior izquierda de la pantalla, en coordenadas de escritorio. Este miembro se usa para determinar la posición relativa de los monitores en un entorno de varios monitores.
Este miembro no se usa para impresoras.
DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayOrientation
Este miembro solo se define para Windows XP y versiones posteriores.
Para las pantallas, especifica la orientación en la que se deben presentar las imágenes. Cuando el DM_DISPLAYORIENTATION bit no se establece en el miembro dmFields, este miembro debe establecerse en cero. Cuando el bit de DM_DISPLAYORIENTATION se establece en el miembro dmFields, este miembro debe establecerse en uno de los siguientes valores:
Valor | Significado |
---|---|
DMDO_DEFAULT | La orientación del dispositivo de visualización del modo actual es la orientación natural del dispositivo y debe usarse como valor predeterminado. |
DMDO_90 | La orientación del dispositivo de pantalla es de 90 grados (medida en el sentido de las agujas del reloj) de la de DMDO_DEFAULT. |
DMDO_180 | La orientación del dispositivo de pantalla es de 180 grados (medida en el sentido de las agujas del reloj) de la de DMDO_DEFAULT. |
DMDO_270 | La orientación del dispositivo de pantalla es de 270 grados (medida en el sentido de las agujas del reloj) de la de DMDO_DEFAULT. |
Este miembro no se usa para impresoras.
Para obtener más información, vea Devolver modos de visualización: DrvGetModes.
DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayFixedOutput
Este miembro solo se define para Windows XP y versiones posteriores.
En el caso de las pantallas de resolución fija, especifica cómo el dispositivo puede presentar un modo de resolución inferior en una pantalla de mayor resolución. Por ejemplo, si la resolución de un dispositivo de pantalla se fija en 1024 X 768, y su modo se establece en 640 x 480, el dispositivo puede mostrar una imagen de 640 X 480 dentro del espacio de pantalla 1024 X 768 o estirar la imagen de 640 X 480 para rellenar el espacio de pantalla más grande.
Cuando el bit de DM_DISPLAYFIXEDOUTPUT no se establece en el miembro dmFields, este miembro debe establecerse en cero. Cuando el DM_DISPLAYFIXEDOUTPUT bit se establece en el miembro dmFields, este miembro debe establecerse en uno de los siguientes valores:
Valor | Significado |
---|---|
DMDFO_CENTER | El dispositivo de pantalla presenta una imagen en modo de resolución inferior al centrarla en el espacio de pantalla más grande. |
DMDFO_STRETCH | El dispositivo de pantalla presenta una imagen en modo de resolución inferior al extenderla para rellenar el espacio de pantalla más grande. |
Este miembro no se usa para impresoras.
Para obtener más información, vea Devolver modos de visualización: DrvGetModes.
dmColor
Para las impresoras, especifica si una impresora de color debe imprimir el color o monocromo. Este miembro puede ser uno de DMCOLOR_COLOR o DMCOLOR_MONOCHROME.
Este miembro no se usa para las pantallas.
dmDuplex
Para impresoras, especifica la impresión dúplex (doble cara) para impresoras compatibles con dúplex. Este miembro puede ser uno de los siguientes valores:
DMDUP_HORIZONTAL
Imprima el doble lado mediante el enlace de borde corto.
DMDUP_SIMPLEX
Imprimir un solo lado.
DMDUP_VERTICAL
Imprima el doble lateral mediante el enlace de borde largo.
Este miembro no se usa para las pantallas.
dmYResolution
Para las impresoras, especifica el y resolución de la impresora, en PPP. Si se usa este miembro, el miembro dmPrintQuality especifica la resolución x.
Este miembro no se usa para las pantallas.
dmTTOption
En el caso de las impresoras, especifica cómo se deben imprimir las fuentes TrueType. Este miembro debe ser una de las constantes con prefijo DMTT definidas en wingdi.h.
Este miembro no se usa para las pantallas.
dmCollate
En el caso de las impresoras, especifica si se deben intercalar varias copias. Este miembro puede ser uno de los siguientes valores:
DMCOLLATE_TRUE
Intercala al imprimir varias copias.
DMCOLLATE_FALSE
No intercale al imprimir varias copias.
Este miembro no se usa para las pantallas.
dmFormName[CCHFORMNAME]
Para las impresoras, especifica el nombre del formulario que se va a usar; como "Carta" o "Legal". Debe ser un nombre que se pueda obtener llamando a la función de Win32
Este miembro no se usa para las pantallas.
dmLogPixels
Para las pantallas, especifica el número de píxeles lógicos por pulgada de un dispositivo de pantalla y debe ser igual al miembro ulLogPixels del GDIINFO estructura.
Este miembro no se usa para impresoras.
dmBitsPerPel
En el caso de las pantallas, especifica la resolución de color, en bits por píxel, de un dispositivo de visualización.
Este miembro no se usa para impresoras.
dmPelsWidth
Para las pantallas, especifica el ancho, en píxeles, de la superficie del dispositivo visible.
Este miembro no se usa para impresoras.
dmPelsHeight
En el caso de las pantallas, especifica el alto, en píxeles, de la superficie del dispositivo visible.
Este miembro no se usa para impresoras.
DUMMYUNIONNAME2
DUMMYUNIONNAME2.dmDisplayFlags
Especifica el modo de visualización del dispositivo. Este miembro puede ser una combinación de los valores siguientes.
Valor | Significado |
---|---|
DM_GRAYSCALE | Especifica que la pantalla es un dispositivo que no es de color. Si no se establece esta marca, se asume el color. Esta marca ya no es válida. |
DM_INTERLACED | Especifica que el modo de presentación está entrelazado. Si no se establece la marca, se supone que no se interlaza. |
Los controladores de pantalla usan este miembro; por ejemplo, en la función
DUMMYUNIONNAME2.dmNup
Para las impresoras, especifica si el sistema de impresión controla la impresión "N-up" (reproduciendo varias páginas lógicas EMF en una sola página física). El valor de este miembro puede ser uno de los siguientes:
Valor | Significado |
---|---|
DMNUP_SYSTEM | El sistema de impresión controla la impresión "N-up". |
DMNUP_ONEUP | El sistema de impresión no controla la impresión "N-up". Una aplicación puede establecer dmNup en DMNUP_ONEUP si pretende realizar la impresión "N up" por su cuenta. |
Este miembro no se usa para las pantallas.
dmDisplayFrequency
Para las pantallas, especifica la frecuencia, en hercios, de un dispositivo de visualización en su modo actual.
Este miembro no se usa para impresoras.
dmICMMethod
Especifica una de las constantes con prefijo DMICMMETHOD definidas en wingdi.h.
dmICMIntent
Especifica una de las constantes con prefijo DMICM definidas en wingdi.h.
dmMediaType
Especifica una de las constantes prefijos DMMEDIA definidas en wingdi.h.
dmDitherType
Especifica una de las constantes prefijos DMDITHER definidas en wingdi.h.
dmReserved1
Está reservado para el uso del sistema y el controlador debe omitirlo.
dmReserved2
Está reservado para el uso del sistema y el controlador debe omitirlo.
dmPanningWidth
Está reservado para el uso del sistema y el controlador debe omitirlo.
dmPanningHeight
Está reservado para el uso del sistema y el controlador debe omitirlo.
Observaciones
El de estructura DEVMODEW de
Para los controladores de impresora, la estructura DEVMODEW se usa para especificar las características de la impresora requeridas por un documento de impresión. También se usa para especificar las características predeterminadas de una impresora.
Inmediatamente después de los miembros definidos de una estructura DEVMODEW (a menudo denominados miembros públicos), puede haber un conjunto de miembros definidos por controladores (a menudo denominados miembros PRIVADOS DEVMODEW). El controlador proporciona el tamaño, en bytes, de este área privada en dmDriverExtra. Los miembros privados definidos por el controlador son para uso exclusivo del controlador. Se puede hacer referencia a la dirección inicial de los miembros privados mediante el miembro dmSize como se indica a continuación:
PVOID pvDriverData = (PVOID) (((BYTE *) pdm) + (pdm->dmSize));
Un controlador puede confiar en el administrador de colas para pasar un búfer DEVMODEW que no sea menor que (dmSize + bytes dmDriverExtra). Como resultado, el controlador puede leer de forma segura ese número de bytes a partir del principio del búfer sin causar una infracción de acceso y sin necesidad de sondear la memoria.
Antes de reproducir EMF, GDI llama al colador para validar el contenido de la parte pública del búfer DEVMODEW. Si el búfer DEVMODEW no supera las pruebas de validación realizadas en la cola, GDI no pasa el búfer al controlador de impresora.
En Windows XP, se agregó un nuevo miembro estructura
Además para Windows XP, varios miembros de la estructura DEVMODEW se trasladaron a diferentes ubicaciones de esta estructura. LosdmScale
Nota
El encabezado wingdi.h define DEVMODE como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
encabezado de |
wingdi.h (incluya Wingdi.h) |