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 (largo).
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 de versão atual é identificado pela constante DM_SPECVERSION em wingdi.h.
dmDriverVersion
Para uma impressora, especifica o número de versão do driver da 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 DEVMODEW pública, não incluindo membros privados especificados pelo driver identificados pelo membro dmDriverExtra .
dmDriverExtra
Especifica o número de bytes de dados de driver privados 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 membros DEVMODEW a seguir estão em uso. Por exemplo, o sinalizador DM_ORIENTATION é definido quando o membro dmOrientation contém dados válidos. Os sinalizadores de DM_XXX são definidos em wingdi.h.
DUMMYUNIONNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmOrientation
Para impressoras, especifica a orientação do 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 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 pontos, 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 17x22 polegadas, enquanto a mesma imagem com um valor de escala de 50 deve ser impressa como de tamanho médio 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 DMBIN definidas em wingdi.h. Se a constante especificada for DMBIN_FORMSOURCE, o compartimento de entrada deverá ser selecionado automaticamente.
Esse membro não é usado para exibições.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPrintQuality
Para impressoras, especifica a resolução da impressora. Os seguintes valores constantes negativos 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, em coordenadas da área de trabalho. Esse membro é usado para determinar a posição relativa dos monitores em um ambiente de vários monitores.
Este 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 estiver definido no membro dmFields , esse membro deverá ser definido como zero. Quando o bit DM_DISPLAYORIENTATION é 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 padrão. |
DMDO_90 | A orientação do dispositivo de exibição é de 90 graus (medido no sentido horário) do DMDO_DEFAULT. |
DMDO_180 | A orientação do dispositivo de exibição é de 180 graus (medido no sentido horário) do DMDO_DEFAULT. |
DMDO_270 | A orientação do dispositivo de exibição é de 270 graus (medido no sentido horário) do DMDO_DEFAULT. |
Este 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 tela de resolução mais alta. Por exemplo, se a resolução de um dispositivo de vídeo for fixada em 1024 X 768 e seu modo for definido como 640 x 480, o dispositivo poderá exibir uma imagem de 640 X 480 dentro do espaço de tela 1024 X 768 ou esticar a imagem 640 X 480 para preencher o espaço maior na tela.
Quando o bit DM_DISPLAYFIXEDOUTPUT não estiver definido no membro dmFields , esse membro deverá 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 de tela maior. |
Este 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 especificará 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 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 agrupar 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 .
Este 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.
Este membro não é usado para impressoras.
dmPelsWidth
Para exibições, especifica a largura, em pixels, da superfície do dispositivo visível.
Este membro não é usado para impressoras.
dmPelsHeight
Para exibições, especifica a altura, em pixels, da superfície visível do dispositivo.
Este 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 dmNup como DMNUP_ONEUP se pretende realizar 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.
Este membro não é usado para impressoras.
dmICMMethod
Especifica uma das constantes prefixadas DMICMMETHOD definidas em wingdi.h.
dmICMIntent
Especifica uma das constantes prefixadas DMICM definidas em wingdi.h.
dmMediaType
Especifica uma das constantes prefixadas DMMEDIA definidas em wingdi.h.
dmDitherType
Especifica uma das constantes prefixadas 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.
Comentários
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 chamados de membros públicos), pode haver um conjunto de membros definidos pelo driver (geralmente chamados de membros DEVMODEW privados). O driver fornece o tamanho, em bytes, dessa área privada em dmDriverExtra. Os membros privados definidos pelo driver são para uso exclusivo 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, a GDI não passará o buffer para o driver da impressora.
No Windows XP, um novo membro do struct foi adicionado. Esse membro de struct contém um membro existente da estrutura DEVMODEW, 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 de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | wingdi.h (inclua Wingdi.h) |