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.
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
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per