Struttura DEVMODEW (wingdi.h)

La struttura DEVMODEW viene utilizzata per specificare le caratteristiche dei dispositivi di visualizzazione e stampa nel set di caratteri Unicode (wide).

Sintassi

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;

Members

dmDeviceName[CCHDEVICENAME]

Per una visualizzazione, specifica il nome della DLL del driver visualizzato; Ad esempio, "perm3dd" per il driver di visualizzazione 3Dlabs Permedia3.

Per una stampante, specifica il "nome descrittivo"; Ad esempio, "PCL/HP LaserJet" nel caso di PCL/HP LaserJet. Se il nome è maggiore dei caratteri CCHDEVICENAME, lo spooler lo tronca per adattarsi alla matrice.

dmSpecVersion

Specifica il numero di versione della struttura DEVMODEW. Il numero di versione corrente è identificato dalla costante DM_SPECVERSION in wingdi.h.

dmDriverVersion

Per una stampante, specifica il numero di versione del driver della stampante assegnato dallo sviluppatore del driver della stampante.

I driver di visualizzazione possono impostare questo membro su DM_SPECVERSION.

dmSize

Specifica le dimensioni in byte della struttura DEVMODEW pubblica, non inclusi i membri privati specificati dal driver identificati dal membro dmDriverExtra .

dmDriverExtra

Specifica il numero di byte di dati del driver privato che seguono i membri della struttura pubblica. Se un driver di dispositivo non fornisce membri DEVMODEW privati, questo membro deve essere impostato su zero.

dmFields

Specifica i flag di bit che identificano i membri DEVMODEW seguenti. Ad esempio, il flag DM_ORIENTATION viene impostato quando il membro dmOrientation contiene dati validi. I flag DM_XXX sono definiti in wingdi.h.

DUMMYUNIONNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmOrientation

Per le stampanti, specifica l'orientamento della carta. Questo membro può essere DMORIENT_PORTRAIT o DMORIENT_LANDSCAPE.

Questo membro non viene utilizzato per la visualizzazione.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperSize

Per le stampanti, specifica le dimensioni della carta su cui stampare. Questo membro deve essere zero se la lunghezza e la larghezza del foglio sono specificate dai membri dmPaperLength e dmPaperWidth . In caso contrario, il membro dmPaperSize deve essere una delle costanti con prefisso DMPAPER definite in wingdi.h.

Questo membro non viene utilizzato per la visualizzazione.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperLength

Per le stampanti, specifica la lunghezza della carta, in unità di 1/10 di millimetri. Questo valore sostituisce la lunghezza del foglio specificato dal membro dmPaperSize e viene utilizzato se il foglio è di dimensioni personalizzate o se il dispositivo è una stampante a matrice di punti, che può stampare una pagina di lunghezza arbitraria.

Questo membro non viene utilizzato per la visualizzazione.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperWidth

Per le stampanti, specifica la larghezza della carta, in unità di 1/10 di millimetri. Questo valore sostituisce la larghezza del foglio specificato dal membro dmPaperSize . Questo membro deve essere utilizzato se viene usato dmPaperLength .

Questo membro non viene utilizzato per la visualizzazione.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmScale

Per le stampanti, specifica la percentuale in base alla quale l'immagine deve essere ridimensionata per la stampa. Le dimensioni della pagina dell'immagine vengono ridimensionate alla pagina fisica in base a un fattore di dmScale/100. Ad esempio, un'immagine da 17 pollici per 22 pollici con un valore di scala pari a 100 richiede una carta da 17x22 pollici, mentre la stessa immagine con un valore di scala pari a 50 deve essere stampata come dimezzato e adattata a carta di dimensioni medie.

Questo membro non viene utilizzato per la visualizzazione.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmCopies

Per le stampanti, specifica il numero di copie da stampare, se il dispositivo supporta più copie.

Questo membro non viene utilizzato per la visualizzazione.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmDefaultSource

Per le stampanti, specifica il contenitore di input predefinito della stampante. Deve essere una delle costanti con prefisso DMBIN definite in wingdi.h. Se la costante specificata è DMBIN_FORMSOURCE, il contenitore di input deve essere selezionato automaticamente.

Questo membro non viene utilizzato per la visualizzazione.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPrintQuality

Per le stampanti, specifica la risoluzione della stampante. I valori costanti negativi seguenti sono definiti in wingdi.h:

DMRES_HIGH
DMRES_MEDIUM
DMRES_LOW
DMRES_DRAFT

Se viene specificato un valore positivo, rappresenta il numero di punti per pollice (DPI) per la risoluzione x e la risoluzione y viene specificata da dmYResolution.

Questo membro non viene utilizzato per la visualizzazione.

DUMMYUNIONNAME.dmPosition

DUMMYUNIONNAME.DUMMYSTRUCTNAME2

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmPosition

Per le visualizzazioni, specifica una struttura POINTL contenente le coordinate x e y dell'angolo superiore sinistro dello schermo, nelle coordinate desktop. Questo membro viene usato per determinare la posizione relativa dei monitor in un ambiente di monitoraggio multiplo.

Questo membro non viene utilizzato per le stampanti.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayOrientation

Questo membro è definito solo per Windows XP e versioni successive.

Per le visualizzazioni, specifica l'orientamento in corrispondenza del quale devono essere presentate le immagini. Quando il bit DM_DISPLAYORIENTATION non è impostato nel membro dmFields , questo membro deve essere impostato su zero. Quando il bit DM_DISPLAYORIENTATION è impostato nel membro dmFields , questo membro deve essere impostato su uno dei valori seguenti:

Valore Significato
DMDO_DEFAULT L'orientamento del dispositivo di visualizzazione della modalità corrente è l'orientamento naturale del dispositivo e deve essere usato come impostazione predefinita.
DMDO_90 L'orientamento del dispositivo di visualizzazione è di 90 gradi (misurata in senso orario) da quello di DMDO_DEFAULT.
DMDO_180 L'orientamento del dispositivo di visualizzazione è di 180 gradi (misurata in senso orario) da quello di DMDO_DEFAULT.
DMDO_270 L'orientamento del dispositivo di visualizzazione è di 270 gradi (misurata in senso orario) da quello di DMDO_DEFAULT.
 

Questo membro non viene utilizzato per le stampanti.

Per altre informazioni, vedere Restituzione delle modalità di visualizzazione: DrvGetModes.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayFixedOutput

Questo membro è definito solo per Windows XP e versioni successive.

Per le visualizzazioni a risoluzione fissa, specifica come il dispositivo può presentare una modalità con risoluzione inferiore su uno schermo con risoluzione superiore. Ad esempio, se la risoluzione di un dispositivo di visualizzazione è fissa a 1024 X 768 e la modalità è impostata su 640 x 480, il dispositivo può visualizzare un'immagine 640 X 480 all'interno dello spazio dello schermo 1024 X 768 oppure estendere l'immagine 640 X 480 per riempire lo spazio dello schermo più grande.

Quando il bit DM_DISPLAYFIXEDOUTPUT non è impostato nel membro dmFields , questo membro deve essere impostato su zero. Quando il bit DM_DISPLAYFIXEDOUTPUT è impostato nel membro dmFields , questo membro deve essere impostato su uno dei valori seguenti:

Valore Significato
DMDFO_CENTER Il dispositivo di visualizzazione presenta un'immagine in modalità risoluzione inferiore centrandola nello spazio dello schermo più grande.
DMDFO_STRETCH Il dispositivo di visualizzazione presenta un'immagine in modalità con risoluzione inferiore estendendola per riempire lo spazio dello schermo più grande.
 

Questo membro non viene utilizzato per le stampanti.

Per altre informazioni, vedere Restituzione delle modalità di visualizzazione: DrvGetModes.

dmColor

Per le stampanti, specifica se una stampante a colori deve stampare colore o monocromatico. Questo membro può essere uno dei DMCOLOR_COLOR o DMCOLOR_MONOCHROME.

Questo membro non viene utilizzato per la visualizzazione.

dmDuplex

Per le stampanti, specifica la stampa duplex (a doppio lato) per le stampanti con supporto duplex. Questo membro può essere uno dei valori seguenti:

DMDUP_HORIZONTAL

Stampare sul doppio lato, utilizzando l'associazione a bordo corto.

DMDUP_SIMPLEX

Stampa a lato singolo.

DMDUP_VERTICAL

Stampare sul doppio lato, utilizzando l'associazione a bordi lunghi.

Questo membro non viene utilizzato per la visualizzazione.

dmYResolution

Per le stampanti, specifica la risoluzione y della stampante, in DPI. Se questo membro viene usato, il membro dmPrintQuality specifica la risoluzione x .

Questo membro non viene utilizzato per la visualizzazione.

dmTTOption

Per le stampanti, specifica la modalità di stampa dei tipi di carattere TrueType. Questo membro deve essere una delle costanti con prefisso DMTT definite in wingdi.h.

Questo membro non viene usato per la visualizzazione.

dmCollate

Per le stampanti, specifica se devono essere confrontate più copie. Questo membro può essere uno dei valori seguenti:

DMCOLLATE_TRUE

Confronto durante la stampa di più copie.

DMCOLLATE_FALSE

Non confrontare quando si stampano più copie.

Questo membro non viene usato per la visualizzazione.

dmFormName[CCHFORMNAME]

Per le stampanti specifica il nome del modulo da usare; ad esempio "Lettera" o "Legale". Deve essere un nome che può essere ottenuto chiamando la funzione Win32 EnumForms .

Questo membro non viene usato per la visualizzazione.

dmLogPixels

Per visualizzare, specifica il numero di pixel logici per pollice di un dispositivo di visualizzazione e deve essere uguale al membro ulLogPixels della struttura GDIINFO .

Questo membro non viene usato per le stampanti.

dmBitsPerPel

Per visualizzare, specifica la risoluzione dei colori, in bit per pixel, di un dispositivo di visualizzazione.

Questo membro non viene usato per le stampanti.

dmPelsWidth

Per visualizzare, specifica la larghezza, in pixel, dell'area del dispositivo visibile.

Questo membro non viene usato per le stampanti.

dmPelsHeight

Per visualizzare, specifica l'altezza, in pixel, della superficie del dispositivo visibile.

Questo membro non viene usato per le stampanti.

DUMMYUNIONNAME2

DUMMYUNIONNAME2.dmDisplayFlags

Specifica la modalità di visualizzazione del dispositivo. Questo membro può essere una combinazione dei valori seguenti.

Valore Significato
DM_GRAYSCALE Specifica che la visualizzazione è un dispositivo noncolore. Se questo flag non è impostato, viene assunto il colore. Questo flag non è più valido.
DM_INTERLACED Specifica che la modalità di visualizzazione è interlacciata. Se il flag non è impostato, viene assunto un valore non interlacciato.

Visualizzare i driver usano questo membro; ad esempio, nella funzione ChangeDisplaySettings . I driver della stampante non usano questo membro.

DUMMYUNIONNAME2.dmNup

Per le stampanti, specifica se il sistema di stampa gestisce la stampa "N-up" (riproduzione di più pagine logiche EMF in una singola pagina fisica). Il valore di questo membro può essere uno dei seguenti:

Valore Significato
DMNUP_SYSTEM Il sistema di stampa gestisce la stampa "N-up".
DMNUP_ONEUP Il sistema di stampa non gestisce la stampa "N-up". Un'applicazione può impostare dmNup su DMNUP_ONEUP se intende eseguire la stampa "N-up" in modo autonomo.
 

Questo membro non viene usato per la visualizzazione.

dmDisplayFrequency

Per visualizzare, specifica la frequenza, in hertz, di un dispositivo visualizzato nella modalità corrente.

Questo membro non viene usato per le stampanti.

dmICMMethod

Specifica una delle costanti prefissi DMICMMETHOD definite in wingdi.h.

dmICMIntent

Specifica una delle costanti DMICM definite in wingdi.h.

dmMediaType

Specifica una delle costanti con prefisso DMMEDIA definite in wingdi.h.

dmDitherType

Specifica una delle costanti prefissi DMDITHER definite in wingdi.h.

dmReserved1

È riservato per l'uso del sistema e deve essere ignorato dal driver.

dmReserved2

È riservato per l'uso del sistema e deve essere ignorato dal driver.

dmPanningWidth

È riservato per l'uso del sistema e deve essere ignorato dal driver.

dmPanningHeight

È riservato per l'uso del sistema e deve essere ignorato dal driver.

Commenti

La struttura DEVMODEW è la versione Unicode della struttura DEVMODE (descritta nella documentazione di Microsoft Windows SDK). Anche se le applicazioni possono usare la versione ANSI o Unicode della struttura, è necessario che i driver usino la versione Unicode.

Per i driver della stampante, la struttura DEVMODEW viene usata per specificare le caratteristiche della stampante richieste da un documento di stampa. Viene usato anche per specificare le caratteristiche predefinite di una stampante.

Immediatamente dopo i membri definiti di una struttura DEVMODEW (spesso denominati membri pubblici), è possibile che sia presente un set di membri definiti dal driver (spesso denominati membri DEVMODEW privati). Il driver fornisce le dimensioni, in byte, di questa area privata in dmDriverExtra. I membri privati definiti dal driver sono destinati all'uso esclusivo del driver. L'indirizzo iniziale per i membri privati può essere fatto riferimento usando il membro dmSize come indicato di seguito:

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

Un driver può basarsi sul spooler per passare un buffer DEVMODEW che non è minore di (dmSize + dmDriverExtra) byte. Di conseguenza, il driver può leggere in modo sicuro tale numero di byte a partire dall'inizio del buffer senza causare una violazione di accesso e senza dover eseguire il probe della memoria.

Prima di riprodurre EMF, GDI chiama il spooler per convalidare il contenuto della parte pubblica del buffer DEVMODEW. Se il buffer DEVMODEW non supera i test di convalida eseguiti nel spooler, GDI non passa il buffer al driver della stampante.

Avviso Windows conferma solo che la parte pubblica di DEVMODEW è valida. Tuttavia, i dati danneggiati nella parte privata della struttura possono causare l'arresto anomalo del codice driver nell'applicazione o nel processo di spooler. Di conseguenza, prima di ogni uso dei dati DEVMODEW, il driver deve verificare che la parte privata di DEVMODEW sia ben formata.
 
In Windows 2000 è stato aggiunto un nuovo membro dell'unione alla struttura DEVMODEW. Questo membro dell'unione contiene un membro della struttura DEVMODEW esistente, dmDisplayFlags, insieme a un nuovo membro, dmNup. Questo membro è descritto nella sezione Membri precedenti.

In Windows XP è stato aggiunto un nuovo membro struct . Questo membro struct contiene un membro della struttura DEVMODEW esistente, dmPosition, insieme a due nuovi membri, dmDisplayOrientation e dmDisplayFixedOutput. Questi membri sono descritti nella sezione Membri precedenti.

Anche per Windows XP, diversi membri della struttura DEVMODEW sono stati spostati in posizioni diverse in questa struttura. I membri dmScale, dmCopies, dmDefaultSource e dmPrintQuality sono stati aggiunti al membro structcontenente i membridmPaperSize, dmPaperLength e dmPaperWidth.

Nota

L'intestazione wingdi.h definisce DEVMODE come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

Requisito Valore
Intestazione wingdi.h (include Wingdi.h)

Vedi anche

DOCUMENTPROPERTYHEADER

DrvConvertDevMode

DrvDeviceCapabilities

DrvGetModes