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;
Membri
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 di CCHDEVICENAME caratteri di lunghezza, lo spooler lo tronca per adattarlo alla matrice.
dmSpecVersion
Specifica il numero di versione di questa 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 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 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 utilizzato 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 della carta sono specificate dai membri dmPaperLength
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 della carta specificata dal membro dmPaperSize e viene utilizzata se la carta è 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 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 di 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 mezza dimensione e adatta 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 gli schermi, specifica una struttura
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 viene impostato nel membro dmFields
Valore | Significato |
---|---|
DMDO_DEFAULT | L'orientamento del dispositivo di visualizzazione della modalità corrente è l'orientamento naturale del dispositivo e deve essere usato come predefinito. |
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 di visualizzazione è di 180 gradi (misurato in senso orario) rispetto a quello di DMDO_DEFAULT. |
DMDO_270 | L'orientamento del dispositivo di visualizzazione è di 270 gradi (misurato in senso orario) rispetto a 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 gli schermi a risoluzione fissa, specifica come il dispositivo può presentare una modalità a 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 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 DM_DISPLAYFIXEDOUTPUT non è impostato nel membro
Valore | Significato |
---|---|
DMDFO_CENTER | Il dispositivo di visualizzazione presenta un'immagine in modalità di risoluzione inferiore centrandola nello spazio dello schermo più grande. |
DMDFO_STRETCH | Il dispositivo di visualizzazione presenta un'immagine in modalità a 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 il colore o la monocromatica. 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
Stampa a doppio lato, utilizzando l'associazione a bordo corto.
DMDUP_SIMPLEX
Stampa a lato singolo.
DMDUP_VERTICAL
Stampa a doppio lato, utilizzando l'associazione a bordi lunghi.
Questo membro non viene utilizzato per la visualizzazione.
dmYResolution
Per le stampanti, specifica il risoluzione della stampante, in DPI. Se viene utilizzato questo membro, il membro dmPrintQuality
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 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 essere un nome che può essere ottenuto chiamando la funzione Win32
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
Questo membro non viene utilizzato per le stampanti.
dmBitsPerPel
Per gli schermi, specifica la risoluzione dei colori, in bit per pixel, di un dispositivo di visualizzazione.
Questo membro non viene utilizzato per le stampanti.
dmPelsWidth
Per gli schermi, specifica la larghezza, espressa in pixel, della superficie del dispositivo visibile.
Questo membro non viene utilizzato per le stampanti.
dmPelsHeight
Per gli schermi, specifica l'altezza, espressa in pixel, della superficie del dispositivo visibile.
Questo membro non viene utilizzato 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 noncolor. Se questo flag non è impostato, viene utilizzato il colore. Questo flag non è più valido. |
DM_INTERLACED | Specifica che la modalità di visualizzazione è interlacciata. Se il flag non è impostato, viene utilizzato un valore non interlacciato. |
I driver di visualizzazione usano questo membro; ad esempio, nella funzione ChangeDisplaySettings
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" autonomamente. |
Questo membro non viene utilizzato per la visualizzazione.
dmDisplayFrequency
Per gli schermi, 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.
Osservazioni
La struttura
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
PVOID pvDriverData = (PVOID) (((BYTE *) pdm) + (pdm->dmSize));
Un driver può basarsi sullo spooler per passare un buffer DEVMODEW non inferiore a (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 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.
In Windows XP è stato aggiunto un nuovo struct membro. Questo membro struct
Anche per Windows XP, diversi membri della struttura DEVMODEW sono stati spostati in posizioni diverse in questa struttura. I
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 non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
intestazione |
wingdi.h (include Wingdi.h) |