Condividi tramite


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 e dmPaperWidth. In caso contrario, il membro dmPaperSize deve essere una delle costanti DMPAPER-prefixed 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 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 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 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 POINTL contenente le coordinate x e y dell'angolo superiore sinistro dello schermo, nelle coordinate del 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 viene 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 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 dmFields, questo membro deve essere impostato su zero. Quando il bit DM_DISPLAYFIXEDOUTPUT viene 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à 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 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 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 EnumForms.

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 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 . 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" 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 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, i driver devono usare 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 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.

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 union alla struttura DEVMODEW. Questo membro 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 struct membro. 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 dmScaledmCopies, dmDefaultSourcee dmPrintQuality sono stati aggiunti allo struct membro contenente ildmOrientation , dmPaperSize, dmPaperLengthe 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 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)

Vedere anche

DOCUMENTPROPERTYHEADER

DrvConvertDevMode

DrvDeviceCapabilities

DrvGetModes