Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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.
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) |