Partilhar via


Estrutura DEVMODEW (wingdi.h)

A estrutura DEVMODEW é usada para especificar características de dispositivos de exibição e impressão no conjunto de caracteres Unicode (wide).

Sintaxe

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;

Membros

dmDeviceName[CCHDEVICENAME]

Para uma exibição, especifica o nome da DLL do driver de exibição; por exemplo, "perm3dd" para o driver de exibição 3Dlabs Permedia3.

Para uma impressora, especifica o "nome amigável"; por exemplo, "PCL/HP LaserJet" no caso de PCL/HP LaserJet. Se o nome for maior que os caracteres CCHDEVICENAME de comprimento, o spooler o truncará para caber na matriz.

dmSpecVersion

Especifica o número de versão dessa estrutura DEVMODEW. O número da versão atual é identificado pela constante DM_SPECVERSION em wingdi.h.

dmDriverVersion

Para uma impressora, especifica o número de versão do driver de impressora atribuído pelo desenvolvedor do driver de impressora.

Os drivers de exibição podem definir esse membro como DM_SPECVERSION.

dmSize

Especifica o tamanho em bytes da estrutura de DEVMODEW pública, sem incluir nenhum membro privado especificado pelo driver identificado pelo membro dmDriverExtra .

dmDriverExtra

Especifica o número de bytes de dados de driver privado que seguem os membros da estrutura pública. Se um driver de dispositivo não fornecer membros DEVMODEW privados, esse membro deverá ser definido como zero.

dmFields

Especifica sinalizadores de bits que identificam quais dos seguintes membros DEVMODEW estão em uso. Por exemplo, o sinalizador DM_ORIENTATION é definido quando o membro dmOrientation contém dados válidos. Os sinalizadores DM_XXX são definidos em wingdi.h.

DUMMYUNIONNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmOrientation

Para impressoras, especifica a orientação de papel. Esse membro pode ser DMORIENT_PORTRAIT ou DMORIENT_LANDSCAPE.

Esse membro não é usado para exibições.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperSize

Para impressoras, especifica o tamanho do papel a ser impresso. Esse membro deverá ser zero se o comprimento e a largura do papel forem especificados pelos membros dmPaperLength e dmPaperWidth . Caso contrário, o membro dmPaperSize deve ser uma das constantes prefixadas por DMPAPER definidas em wingdi.h.

Esse membro não é usado para exibições.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperLength

Para impressoras, especifica o comprimento do papel, em unidades de 1/10 de milímetro. Esse valor substitui o comprimento do papel especificado pelo membro dmPaperSize e é usado se o papel for de um tamanho personalizado ou se o dispositivo for uma impressora de matriz de ponto, que pode imprimir uma página de comprimento arbitrário.

Esse membro não é usado para exibições.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperWidth

Para impressoras, especifica a largura do papel, em unidades de 1/10 de milímetro. Esse valor substitui a largura do papel especificado pelo membro dmPaperSize . Esse membro deverá ser usado se dmPaperLength for usado.

Esse membro não é usado para exibições.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmScale

Para impressoras, especifica o percentual pelo qual a imagem deve ser dimensionada para impressão. O tamanho da página da imagem é dimensionado para a página física por um fator de dmScale/100. Por exemplo, uma imagem de 17 polegadas por 22 polegadas com um valor de escala de 100 requer papel de 17 x 22 polegadas, enquanto a mesma imagem com um valor de escala de 50 deve ser impressa como de meio tamanho e caber em papel do tamanho de letra.

Esse membro não é usado para exibições.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmCopies

Para impressoras, especifica o número de cópias a serem impressas, se o dispositivo der suporte a várias cópias.

Esse membro não é usado para exibições.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmDefaultSource

Para impressoras, especifica o compartimento de entrada padrão da impressora. Essa deve ser uma das constantes prefixadas por DMBIN definidas em wingdi.h. Se a constante especificada for DMBIN_FORMSOURCE, a caixa de entrada deverá ser selecionada automaticamente.

Esse membro não é usado para exibições.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPrintQuality

Para impressoras, especifica a resolução da impressora. Os seguintes valores de constante negativa são definidos em wingdi.h:

DMRES_HIGH
DMRES_MEDIUM
DMRES_LOW
DMRES_DRAFT

Se um valor positivo for especificado, ele representará o número de pontos por polegada (DPI) para a resolução x e a resolução y será especificada por dmYResolution.

Esse membro não é usado para exibições.

DUMMYUNIONNAME.dmPosition

DUMMYUNIONNAME.DUMMYSTRUCTNAME2

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmPosition

Para exibições, especifica uma estrutura POINTL que contém as coordenadas x e y do canto superior esquerdo da exibição, nas coordenadas da área de trabalho. Esse membro é usado para determinar a posição relativa dos monitores em um ambiente de monitor múltiplo.

Esse membro não é usado para impressoras.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayOrientation

Esse membro é definido apenas para Windows XP e posterior.

Para exibições, especifica a orientação na qual as imagens devem ser apresentadas. Quando o bit DM_DISPLAYORIENTATION não é definido no membro dmFields , esse membro deve ser definido como zero. Quando o DM_DISPLAYORIENTATION bit é definido no membro dmFields , esse membro deve ser definido como um dos seguintes valores:

Valor Significado
DMDO_DEFAULT A orientação do dispositivo de exibição do modo atual é a orientação natural do dispositivo e deve ser usada como o padrão.
DMDO_90 A orientação do dispositivo de exibição é de 90 graus (no sentido anti-horário medido) do DMDO_DEFAULT.
DMDO_180 A orientação do dispositivo de exibição é de 180 graus (medido no sentido anti-horário) do DMDO_DEFAULT.
DMDO_270 A orientação do dispositivo de exibição é de 270 graus (no sentido anti-horário medido) do DMDO_DEFAULT.
 

Esse membro não é usado para impressoras.

Para obter mais informações, consulte Retornando modos de exibição: DrvGetModes.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayFixedOutput

Esse membro é definido apenas para Windows XP e posterior.

Para exibições de resolução fixa, especifica como o dispositivo pode apresentar um modo de resolução inferior em uma exibição de resolução mais alta. Por exemplo, se a resolução de um dispositivo de exibição for fixada em 1024 X 768 e seu modo for definido como 640 x 480, o dispositivo poderá exibir uma imagem 640 X 480 dentro do espaço de tela 1024 X 768 ou esticar a imagem 640 X 480 para preencher o espaço de tela maior.

Quando o bit DM_DISPLAYFIXEDOUTPUT não é definido no membro dmFields , esse membro deve ser definido como zero. Quando o bit DM_DISPLAYFIXEDOUTPUT é definido no membro dmFields , esse membro deve ser definido como um dos seguintes valores:

Valor Significado
DMDFO_CENTER O dispositivo de exibição apresenta uma imagem de modo de resolução inferior centralizando-a no espaço de tela maior.
DMDFO_STRETCH O dispositivo de exibição apresenta uma imagem de modo de resolução inferior, alongando-a para preencher o espaço maior na tela.
 

Esse membro não é usado para impressoras.

Para obter mais informações, consulte Retornando modos de exibição: DrvGetModes.

dmColor

Para impressoras, especifica se uma impressora colorida deve imprimir cor ou monocromática. Esse membro pode ser um dos DMCOLOR_COLOR ou DMCOLOR_MONOCHROME.

Esse membro não é usado para exibições.

dmDuplex

Para impressoras, especifica a impressão duplex (de dois lados) para impressoras compatíveis com duplex. Esse membro pode ser um dos seguintes valores:

DMDUP_HORIZONTAL

Imprima de dois lados usando a associação de borda curta.

DMDUP_SIMPLEX

Imprimir de lado único.

DMDUP_VERTICAL

Imprima de dois lados usando a associação de borda longa.

Esse membro não é usado para exibições.

dmYResolution

Para impressoras, especifica a resolução y da impressora, em DPI. Se esse membro for usado, o membro dmPrintQuality especifica a resolução x .

Esse membro não é usado para exibições.

dmTTOption

Para impressoras, especifica como as fontes TrueType devem ser impressas. Esse membro deve ser uma das constantes prefixadas por DMTT definidas em wingdi.h.

Esse membro não é usado para exibições.

dmCollate

Para impressoras, especifica se várias cópias devem ser agrupadas. Esse membro pode ser um dos seguintes valores:

DMCOLLATE_TRUE

Agrupar ao imprimir várias cópias.

DMCOLLATE_FALSE

Não cole ao imprimir várias cópias.

Esse membro não é usado para exibições.

dmFormName[CCHFORMNAME]

Para impressoras, especifica o nome do formulário a ser usado; como "Carta" ou "Legal". Esse deve ser um nome que pode ser obtido chamando a função Win32 EnumForms .

Esse membro não é usado para exibições.

dmLogPixels

Para exibições, especifica o número de pixels lógicos por polegada de um dispositivo de exibição e deve ser igual ao membro ulLogPixels da estrutura GDIINFO .

Esse membro não é usado para impressoras.

dmBitsPerPel

Para exibições, especifica a resolução de cores, em bits por pixel, de um dispositivo de exibição.

Esse membro não é usado para impressoras.

dmPelsWidth

Para exibições, especifica a largura, em pixels, da superfície visível do dispositivo.

Esse membro não é usado para impressoras.

dmPelsHeight

Para exibições, especifica a altura, em pixels, da superfície visível do dispositivo.

Esse membro não é usado para impressoras.

DUMMYUNIONNAME2

DUMMYUNIONNAME2.dmDisplayFlags

Especifica o modo de exibição do dispositivo. Esse membro pode ser uma combinação dos valores a seguir.

Valor Significado
DM_GRAYSCALE Especifica que a exibição é um dispositivo nãocolor. Se esse sinalizador não estiver definido, a cor será assumida. Esse sinalizador não é mais válido.
DM_INTERLACED Especifica que o modo de exibição está entrelaçado. Se o sinalizador não estiver definido, não entrelaçado será assumido.

Os drivers de exibição usam esse membro; por exemplo, na função ChangeDisplaySettings . Os drivers de impressora não usam esse membro.

DUMMYUNIONNAME2.dmNup

Para impressoras, especifica se o sistema de impressão manipula a impressão "N-up" (reproduzindo várias páginas lógicas EMF em uma única página física). O valor desse membro pode ser um dos seguintes:

Valor Significado
DMNUP_SYSTEM O sistema de impressão manipula a impressão "N-up".
DMNUP_ONEUP O sistema de impressão não manipula a impressão "N-up". Um aplicativo pode definir o dmNup como DMNUP_ONEUP se pretende realizar a impressão "N-up" por conta própria.
 

Esse membro não é usado para exibições.

dmDisplayFrequency

Para exibições, especifica a frequência, em hertz, de um dispositivo de exibição no modo atual.

Esse membro não é usado para impressoras.

dmICMMethod

Especifica uma das constantes prefixadas por DMICMMETHOD definidas em wingdi.h.

dmICMIntent

Especifica uma das constantes prefixadas por DMICM definidas em wingdi.h.

dmMediaType

Especifica uma das constantes prefixadas DMMEDIA definidas em wingdi.h.

dmDitherType

Especifica uma das constantes prefixadas por DMDITHER definidas em wingdi.h.

dmReserved1

É reservado para uso do sistema e deve ser ignorado pelo driver.

dmReserved2

É reservado para uso do sistema e deve ser ignorado pelo driver.

dmPanningWidth

É reservado para uso do sistema e deve ser ignorado pelo driver.

dmPanningHeight

É reservado para uso do sistema e deve ser ignorado pelo driver.

Observações

A estrutura DEVMODEW é a versão Unicode da estrutura DEVMODE (descrita na documentação do SDK do Microsoft Windows). Embora os aplicativos possam usar a versão ANSI ou Unicode da estrutura, os drivers são necessários para usar a versão Unicode.

Para drivers de impressora, a estrutura DEVMODEW é usada para especificar as características da impressora exigidas por um documento de impressão. Ele também é usado para especificar as características padrão de uma impressora.

Imediatamente após os membros definidos de uma estrutura DEVMODEW (geralmente conhecidos como seus membros públicos), pode haver um conjunto de membros definidos pelo driver (muitas vezes chamados de membros DEVMODEW privados). O driver fornece o tamanho, em bytes, dessa área privada no dmDriverExtra. Os membros privados definidos pelo driver são usados exclusivamente pelo driver. O endereço inicial dos membros privados pode ser referenciado usando o membro dmSize da seguinte maneira:

PVOID pvDriverData = (PVOID) (((BYTE *) pdm) + (pdm->dmSize));

Um driver pode contar com o spooler para passar um buffer DEVMODEW que não seja menor que (dmSize + dmDriverExtra) bytes. Como resultado, o driver pode ler com segurança esse número de bytes a partir do início do buffer sem causar uma violação de acesso e sem a necessidade de investigar a memória.

Antes de reproduzir o EMF, a GDI chama o spooler para validar o conteúdo da parte pública do buffer DEVMODEW. Se o buffer DEVMODEW não passar nos testes de validação executados no spooler, o GDI não passará o buffer para o driver da impressora.

Aviso O Windows confirma apenas que a parte pública de DEVMODEW é válida. No entanto, dados corrompidos na parte privada da estrutura podem fazer com que o código do driver falhe no aplicativo ou no processo do spooler. Consequentemente, antes de cada uso de dados DEVMODEW, o driver deve verificar se a parte privada de DEVMODEW está bem formada.
 
No Windows 2000, um novo membro do sindicato foi adicionado à estrutura DEVMODEW. Esse membro do sindicato contém um membro existente da estrutura DEVMODEW, dmDisplayFlags, juntamente com um novo membro, dmNup. Esse membro é descrito na seção Membros anterior.

No Windows XP, um novo membro do struct foi adicionado. Este membro do struct contém um membro de estrutura DEVMODEW existente, dmPosition, juntamente com dois novos membros, dmDisplayOrientation e dmDisplayFixedOutput. Esses membros são descritos na seção Membros anterior.

Além disso, para o Windows XP, vários membros da estrutura DEVMODEW foram movidos para locais diferentes nessa estrutura. Os membros dmScale, dmCopies, dmDefaultSource e dmPrintQuality foram acrescentados ao membro do struct que contém os membros dmOrientation, dmPaperSize, dmPaperLength e dmPaperWidth .

Observação

O cabeçalho wingdi.h define DEVMODE como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
cabeçalho wingdi.h (inclua Wingdi.h)

Consulte também

DOCUMENTPROPERTYHEADER

DrvConvertDevMode

drvDeviceCapabilities

DrvGetModes