Compartir a través de


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 y miembros dmPaperWidth. 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 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 EnumForms.

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 ChangeDisplaySettings. Los controladores de impresora no usan este miembro.

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 es la versión Unicode de la estructura DEVMODE (que se describe en la documentación del SDK de Microsoft Windows). Aunque las aplicaciones pueden usar la versión ANSI o Unicode de la estructura, se requieren controladores para 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 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.

Advertencia Windows solo confirma que la parte pública de DEVMODEW es válida. Sin embargo, los datos dañados en la parte privada de la estructura pueden hacer que el código del controlador se bloquee en la aplicación o en el proceso de cola. Por lo tanto, antes de cada uso de los datos DEVMODEW, el controlador debe comprobar que la parte privada de DEVMODEW tiene un formato correcto.
 
En Windows 2000, se agregó un nuevo miembro unión a la estructura DEVMODEW. Este miembro de unión contiene un miembro de estructura DEVMODEW existente, dmDisplayFlags, junto con un nuevo miembro, dmNup. Este miembro se describe en la sección Miembros anterior.

En Windows XP, se agregó un nuevo miembro estructura . Este miembro estructura de 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. LosdmScale , dmCopies, dmDefaultSourcey miembros dmPrintQuality se anexaron a la estructura Miembro que contiene eldmOrientation dmPaperSize, dmPaperSize, dmPaperLengthy miembros de 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 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)

Consulte también

DOCUMENTPROPERTYHEADER

DrvConvertDevMode

DrvDeviceCapabilities

DrvGetModes