Struttura DEVMODEW (wingdi.h)

La struttura DEVMODEW viene usata 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 in lunghezza, lo spooler lo tronca per adattarsi alla matrice.

dmSpecVersion

Specifica il numero di versione di questa struttura DEVMODEW. Il numero di versione corrente viene 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 e 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 in uso. Ad esempio, il flag di DM_ORIENTATION viene impostato quando il membro dmOrientation contiene dati validi. I flag di 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 usato per la visualizzazione.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperSize

Per le stampanti, specifica le dimensioni della carta da stampare. Questo membro deve essere zero se la lunghezza e la larghezza del foglio vengono specificati dai membri dmPaperLength e dmPaperWidth . In caso contrario, il membro dmPaperSize deve essere una delle costanti prefissi DMPAPER definite in wingdi.h.

Questo membro non viene usato per la visualizzazione.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperLength

Per le stampanti, specifica la lunghezza della carta, in unità di 1/10 di un millimetri. Questo valore esegue l'override della lunghezza della carta specificata dal membro dmPaperSize e viene utilizzata se la carta è di dimensioni personalizzate o se il dispositivo è una stampante matrice di punti, che può stampare una pagina di lunghezza arbitraria.

Questo membro non viene usato per la visualizzazione.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperWidth

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

Questo membro non viene usato 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 nella pagina fisica in base a un fattore di dmScale/100. Ad esempio, un'immagine da 17 pollici a 22 pollici con un valore di scala pari a 100 richiede carta da 17x22 pollici, mentre la stessa immagine con un valore di scala pari a 50 deve essere stampata come mezzo formato e adatta a carta di dimensioni medie.

Questo membro non viene usato 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 usato per la visualizzazione.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmDefaultSource

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

Questo membro non viene usato 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 usato per la visualizzazione.

DUMMYUNIONNAME.dmPosition

DUMMYUNIONNAME.DUMMYSTRUCTNAME2

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmPosition

Per visualizzare, 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 usato per le stampanti.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayOrientation

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

Per visualizzare, specifica l'orientamento in corrispondenza del quale devono essere presentate le immagini. Quando il bit di DM_DISPLAYORIENTATION non è impostato nel membro dmFields , questo membro deve essere impostato su zero. Quando il bit di 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 (misurato in senso orario) da quello di DMDO_DEFAULT.
DMDO_180 L'orientamento del dispositivo visualizzato è di 180 gradi (misurata in senso orario) da quello di DMDO_DEFAULT.
DMDO_270 L'orientamento del dispositivo di visualizzazione è di 270 gradi (misurato in senso orario) da quello di DMDO_DEFAULT.
 

Questo membro non viene usato per le stampanti.

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

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayFixedOutput

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

Per le visualizzazioni a risoluzione fissa, specifica come il dispositivo può presentare una modalità di risoluzione inferiore in uno schermo con risoluzione superiore. Ad esempio, se la risoluzione di un dispositivo visualizzato è fissa a 1024 X 768 e la relativa 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 di DM_DISPLAYFIXEDOUTPUT non è impostato nel membro dmFields , questo membro deve essere impostato su zero. Quando il bit di DM_DISPLAYFIXEDOUTPUT è impostato nel membro dmFields , questo membro deve essere impostato su uno dei valori seguenti:

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

Questo membro non viene usato 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 il colore o il monocromatico. Questo membro può essere uno dei DMCOLOR_COLOR o DMCOLOR_MONOCHROME.

Questo membro non viene usato 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

Stampa a doppio lato, usando l'associazione a bordo corto.

DMDUP_SIMPLEX

Stampa a lato singolo.

DMDUP_VERTICAL

Stampa a doppio lato, usando l'associazione a bordo lungo.

Questo membro non viene usato 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 usato 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 utilizzato per la visualizzazione.

dmCollate

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

DMCOLLATE_TRUE

Collazione durante la stampa di più copie.

DMCOLLATE_FALSE

Non eseguire la collazione durante la stampa di più copie.

Questo membro non viene utilizzato per la visualizzazione.

dmFormName[CCHFORMNAME]

Per le stampanti, specifica il nome del modulo da utilizzare; ad esempio "Lettera" o "Legale". Deve trattarsi di un nome che può essere ottenuto chiamando la funzione Win32 EnumForms (descritta nella documentazione di Microsoft Window SDK).

Questo membro non viene utilizzato per la visualizzazione.

dmLogPixels

Per gli schermi, 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 utilizzato per le stampanti.

dmBitsPerPel

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

Questo membro non viene utilizzato per le stampanti.

dmPelsWidth

Per gli schermi, specifica la larghezza, in pixel, della superficie del dispositivo visibile.

Questo membro non viene utilizzato per le stampanti.

dmPelsHeight

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

Questo membro non viene utilizzato per le stampanti.

DUMMYUNIONNAME2

DUMMYUNIONNAME2.dmDisplayFlags

Per gli schermi, specifica la modalità di visualizzazione di un dispositivo di visualizzazione. Questo membro può essere uno dei valori seguenti:

Questo membro non viene utilizzato per le stampanti.

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 autonomamente la stampa "N-up".
 

Questo membro non viene utilizzato per la visualizzazione.

dmDisplayFrequency

Per i display, specifica la frequenza, inhz, di un dispositivo di visualizzazione nella modalità corrente.

Questo membro non viene utilizzato per le stampanti.

dmICMMethod

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

dmICMIntent

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

dmMediaType

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

dmDitherType

Specifica una delle costanti con prefisso 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 utilizzata 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 definiti come membri pubblici), può essere presente un set di membri definiti dal driver (spesso definiti come 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. È possibile fare riferimento all'indirizzo iniziale per i membri privati usando il membro dmSize come indicato di seguito:

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

Un driver può basarsi sullo spooler per passare un buffer DEVMODEW non inferiore ai byte (dmSize + dmDriverExtra). 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 lo spooler per convalidare il contenuto della parte pubblica del buffer DEVMODEW. Se il buffer DEVMODEW non supera i test di convalida eseguiti nello 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 di 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 precedente.

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 precedente.

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 struct contenente i membri dmOrientation, dmPaperSize, 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 del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

   
Intestazione wingdi.h (include Wingdi.h)

Vedi anche

DOCUMENTPROPERTYHEADER

DrvConvertDevMode

DrvDeviceCapabilities

DrvGetModes