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 colador la 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, no incluidos los miembros privados y especificados por el controlador identificados 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 marcas de bits que identifican cuáles de los siguientes miembros de 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 los miembros dmPaperLength y dmPaperWidth especifican la longitud y el ancho del papel. De lo contrario, el miembro dmPaperSize debe ser una de las constantes con prefijo DMPAPER definidas en wingdi.h.
Este miembro no se usa para las pantallas.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperLength
Para las 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 miembro dmPaperSize 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 las 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
En el caso de las impresoras, especifica el porcentaje por el que se va a escalar la imagen para la impresión. El tamaño de página de la imagen se escala a la página física mediante 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 con un 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
En el caso de las impresoras, especifica el contenedor de entrada predeterminado de la impresora. Debe ser una de las constantes con prefijo DMBIN definidas en wingdi.h. Si la constante especificada es DMBIN_FORMSOURCE, la bandeja 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 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 bit de DM_DISPLAYORIENTATION 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 valores siguientes:
Valor | Significado |
---|---|
DMDO_DEFAULT | La orientación del dispositivo de pantalla 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 presentació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 ajustar la imagen de 640 X 480 para rellenar el espacio de pantalla más grande.
Cuando el bit de DM_DISPLAYFIXEDOUTPUT no está establecido en el miembro dmFields , este miembro debe establecerse en cero. Cuando el bit de DM_DISPLAYFIXEDOUTPUT 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 de 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 ampliarla 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 presentación: DrvGetModes.
dmColor
Para las impresoras, especifica si una impresora de color debe imprimir color o monocromo. Este miembro puede ser uno de DMCOLOR_COLOR o DMCOLOR_MONOCHROME.
Este miembro no se usa para las pantallas.
dmDuplex
Para las 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
Imprima un solo lado.
DMDUP_VERTICAL
Imprima el doble lado mediante el enlace de borde largo.
Este miembro no se usa para las pantallas.
dmYResolution
Para las impresoras, especifica la resolución y 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
Para 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 EnumForms 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 de la estructura GDIINFO .
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 pantalla.
Este miembro no se usa para impresoras.
dmPelsWidth
Para las pantallas, especifica el ancho, en píxeles, de la superficie visible del dispositivo.
Este miembro no se usa para impresoras.
dmPelsHeight
Para las pantallas, especifica el alto, en píxeles, de la superficie visible del dispositivo.
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 ha interlacado. |
Los controladores de pantalla usan este miembro; por ejemplo, en la función ChangeDisplaySettings . Los controladores de impresora no usan este miembro.
DUMMYUNIONNAME2.dmNup
En el caso de 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" por sí misma. |
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 con prefijo DMMEDIA definidas en wingdi.h.
dmDitherType
Especifica una de las constantes con prefijo DMDITHER definidas en wingdi.h.
dmReserved1
Está reservado para uso del sistema y debe omitirlo el controlador.
dmReserved2
Está reservado para uso del sistema y debe omitirlo el controlador.
dmPanningWidth
Está reservado para uso del sistema y debe omitirlo el controlador.
dmPanningHeight
Está reservado para uso del sistema y debe omitirlo el controlador.
Comentarios
La estructura DEVMODEW es la versión Unicode de la estructura DEVMODE (descrita en la documentación de Microsoft Windows SDK). Aunque las aplicaciones pueden usar la versión ANSI o Unicode de la estructura, los controladores deben usar la versión Unicode.
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 el controlador (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 de la siguiente manera:
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 + dmDriverExtra). Como resultado, el controlador puede leer de forma segura ese número de bytes a partir del principio del búfer sin provocar una infracción de acceso y sin necesidad de sondear la memoria.
Antes de reproducir EMF, GDI llama al administrador de colas 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 el colador, GDI no pasa el búfer al controlador de impresora.
En Windows XP, se agregó un nuevo miembro de estructura . Este miembro de estructura contiene un miembro de estructura DEVMODEW existente, dmPosition, junto con dos nuevos miembros, dmDisplayOrientation y dmDisplayFixedOutput. Estos miembros se describen en la sección Miembros anterior.
Además para Windows XP, varios miembros de la estructura DEVMODEW se trasladaron a diferentes ubicaciones de esta estructura. Los miembros dmScale, dmCopies, dmDefaultSource y dmPrintQuality se anexaron al miembro struct que contiene los miembros dmOrientation, dmPaperSize, dmPaperLength y dmPaperWidth .
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 neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.
Requisitos
Requisito | Valor |
---|---|
Header | wingdi.h (incluya Wingdi.h) |
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de