Structure DEVMODEW (wingdi.h)
La structure DEVMODEW est utilisée pour spécifier les caractéristiques des appareils d’affichage et d’impression dans le jeu de caractères Unicode (large).
Syntaxe
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;
Membres
dmDeviceName[CCHDEVICENAME]
Pour un affichage, spécifie le nom de la DLL du pilote d’affichage ; par exemple, « perm3dd » pour le pilote d’affichage Permedia3 3Dlabs.
Pour une imprimante, spécifie le « nom convivial » ; par exemple, « PCL/HP LaserJet » dans le cas de PCL/HP LaserJet. Si le nom est supérieur à la longueur des caractères CCHDEVICENAME, le spouleur le tronque pour le tenir dans le tableau.
dmSpecVersion
Spécifie le numéro de version de cette structure DEVMODEW. Le numéro de version actuel est identifié par la constante DM_SPECVERSION dans wingdi.h.
dmDriverVersion
Pour une imprimante, spécifie le numéro de version du pilote d’imprimante attribué par le développeur du pilote d’imprimante.
Les pilotes d’affichage peuvent définir ce membre sur DM_SPECVERSION.
dmSize
Spécifie la taille en octets de la structure DEVMODEW publique, sans inclure les membres privés spécifiés par le pilote identifiés par le membre dmDriverExtra .
dmDriverExtra
Spécifie le nombre d’octets de données de pilote privé qui suivent les membres de la structure publique. Si un pilote de périphérique ne fournit pas de membres DEVMODEW privés, ce membre doit être défini sur zéro.
dmFields
Spécifie les indicateurs de bits qui identifient les membres DEVMODEW suivants qui sont en cours d’utilisation. Par exemple, l’indicateur DM_ORIENTATION est défini lorsque le membre dmOrientation contient des données valides. Les indicateurs DM_XXX sont définis dans wingdi.h.
DUMMYUNIONNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmOrientation
Pour les imprimantes, spécifie l’orientation du papier. Ce membre peut être DMORIENT_PORTRAIT ou DMORIENT_LANDSCAPE.
Ce membre n’est pas utilisé pour les affichages.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperSize
Pour les imprimantes, spécifie la taille du papier sur lequel imprimer. Ce membre doit être égal à zéro si la longueur et la largeur du papier sont spécifiées par les membres dmPaperLength et dmPaperWidth . Sinon, le membre dmPaperSize doit être l’une des constantes préfixées DMPAPER définies dans wingdi.h.
Ce membre n’est pas utilisé pour les affichages.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperLength
Pour les imprimantes, spécifie la longueur du papier, en unités de 1/10 millimètre. Cette valeur remplace la longueur du papier spécifiée par le membre dmPaperSize et est utilisée si le papier est d’une taille personnalisée ou si l’appareil est une imprimante à matrice de points, qui peut imprimer une page de longueur arbitraire.
Ce membre n’est pas utilisé pour les affichages.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperWidth
Pour les imprimantes, spécifie la largeur du papier, en unités de 1/10 millimètre. Cette valeur remplace la largeur du papier spécifiée par le membre dmPaperSize . Ce membre doit être utilisé si dmPaperLength est utilisé.
Ce membre n’est pas utilisé pour les affichages.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmScale
Pour les imprimantes, spécifie le pourcentage selon lequel l’image doit être mise à l’échelle pour l’impression. La taille de page de l’image est mise à l’échelle sur la page physique par un facteur dmScale/100. Par exemple, une image de 17 pouces sur 22 pouces avec une valeur d’échelle de 100 nécessite un papier de 17 x 22 pouces, tandis que la même image avec une valeur d’échelle de 50 doit être imprimée en demi-taille et tenir sur du papier au format lettre.
Ce membre n’est pas utilisé pour les affichages.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmCopies
Pour les imprimantes, spécifie le nombre de copies à imprimer, si l’appareil prend en charge plusieurs copies.
Ce membre n’est pas utilisé pour les affichages.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmDefaultSource
Pour les imprimantes, spécifie le bac d’entrée par défaut de l’imprimante. Il doit s’agir de l’une des constantes préfixées DMBIN définies dans wingdi.h. Si la constante spécifiée est DMBIN_FORMSOURCE, la corbeille d’entrée doit être sélectionnée automatiquement.
Ce membre n’est pas utilisé pour les affichages.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPrintQuality
Pour les imprimantes, spécifie la résolution de l’imprimante. Les valeurs de constante négative suivantes sont définies dans wingdi.h :
- DMRES_HIGH
- DMRES_MEDIUM
- DMRES_LOW
- DMRES_DRAFT
Si une valeur positive est spécifiée, elle représente le nombre de points par pouce (PPP) pour la résolution x , et la résolution y est spécifiée par dmYResolution.
Ce membre n’est pas utilisé pour les affichages.
DUMMYUNIONNAME.dmPosition
DUMMYUNIONNAME.DUMMYSTRUCTNAME2
DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmPosition
Pour les affichages, spécifie une structure POINTL contenant les coordonnées x et y du coin supérieur gauche de l’affichage, dans les coordonnées du bureau. Ce membre est utilisé pour déterminer la position relative des moniteurs dans un environnement à plusieurs moniteurs.
Ce membre n’est pas utilisé pour les imprimantes.
DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayOrientation
Ce membre est défini uniquement pour Windows XP et versions ultérieures.
Pour les affichages, spécifie l’orientation à laquelle les images doivent être présentées. Lorsque le bit DM_DISPLAYORIENTATION n’est pas défini dans le membre dmFields , ce membre doit être défini sur zéro. Lorsque le DM_DISPLAYORIENTATION bit est défini dans le membre dmFields , ce membre doit être défini sur l’une des valeurs suivantes :
Valeur | Signification |
---|---|
DMDO_DEFAULT | L’orientation de l’appareil d’affichage du mode actuel est l’orientation naturelle de l’appareil et doit être utilisée comme valeur par défaut. |
DMDO_90 | L’orientation de l’appareil d’affichage est de 90 degrés (mesurée dans le sens des aiguilles d’une montre) par rapport à celle de DMDO_DEFAULT. |
DMDO_180 | L’orientation de l’appareil d’affichage est de 180 degrés (mesurée dans le sens des aiguilles d’une montre) de celle de DMDO_DEFAULT. |
DMDO_270 | L’orientation de l’appareil d’affichage est de 270 degrés (mesurée dans le sens des aiguilles d’une montre) par rapport à celle de DMDO_DEFAULT. |
Ce membre n’est pas utilisé pour les imprimantes.
Pour plus d’informations, consultez Modes d’affichage de retour : DrvGetModes.
DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayFixedOutput
Ce membre est défini uniquement pour Windows XP et versions ultérieures.
Pour les affichages à résolution fixe, spécifie comment l’appareil peut présenter un mode de résolution inférieure sur un écran à résolution supérieure. Par exemple, si la résolution d’un périphérique d’affichage est fixée à 1024 x 768 et que son mode est défini sur 640 x 480, l’appareil peut afficher une image de 640 x 480 dans l’espace d’écran de 1024 x 768, ou étirer l’image de 640 x 480 pour remplir l’espace d’écran plus grand.
Lorsque le bit DM_DISPLAYFIXEDOUTPUT n’est pas défini dans le membre dmFields , ce membre doit être défini sur zéro. Lorsque le bit DM_DISPLAYFIXEDOUTPUT est défini dans le membre dmFields , ce membre doit être défini sur l’une des valeurs suivantes :
Valeur | Signification |
---|---|
DMDFO_CENTER | L’appareil d’affichage présente une image en mode résolution inférieure en la centrant dans l’espace d’écran plus grand. |
DMDFO_STRETCH | L’appareil d’affichage présente une image en mode de résolution inférieure en l’étirant pour remplir l’espace d’écran plus grand. |
Ce membre n’est pas utilisé pour les imprimantes.
Pour plus d’informations, consultez Modes d’affichage de retour : DrvGetModes.
dmColor
Pour les imprimantes, spécifie si une imprimante couleur doit imprimer en couleur ou en monochrome. Ce membre peut être l’un des DMCOLOR_COLOR ou DMCOLOR_MONOCHROME.
Ce membre n’est pas utilisé pour les affichages.
dmDuplex
Pour les imprimantes, spécifie l’impression recto verso (recto-verso) pour les imprimantes compatibles duplex. Ce membre peut être l’une des valeurs suivantes :
DMDUP_HORIZONTAL
Imprimez recto verso à l’aide d’une liaison à bord court.
DMDUP_SIMPLEX
Imprimer une face unique.
DMDUP_VERTICAL
Imprimez recto verso à l’aide d’une liaison de bord long.
Ce membre n’est pas utilisé pour les affichages.
dmYResolution
Pour les imprimantes, spécifie la résolution y de l’imprimante, en PPP. Si ce membre est utilisé, le membre dmPrintQuality spécifie la résolution x .
Ce membre n’est pas utilisé pour les affichages.
dmTTOption
Pour les imprimantes, spécifie la façon dont les polices TrueType doivent être imprimées. Ce membre doit être l’une des constantes préfixées DMTT définies dans wingdi.h.
Ce membre n’est pas utilisé pour les affichages.
dmCollate
Pour les imprimantes, spécifie si plusieurs copies doivent être rassemblées. Ce membre peut avoir l’une des valeurs suivantes :
DMCOLLATE_TRUE
Collez lors de l’impression de plusieurs copies.
DMCOLLATE_FALSE
Ne collez pas lors de l’impression de plusieurs copies.
Ce membre n’est pas utilisé pour les affichages.
dmFormName[CCHFORMNAME]
Pour les imprimantes, spécifie le nom du formulaire à utiliser ; par exemple , « Lettre » ou « Juridique ». Il doit s’agir d’un nom qui peut être obtenu en appelant la fonction Win32 EnumForms .
Ce membre n’est pas utilisé pour les affichages.
dmLogPixels
Pour les affichages, spécifie le nombre de pixels logiques par pouce d’un périphérique d’affichage et doit être égal au membre ulLogPixels de la structure GDIINFO .
Ce membre n’est pas utilisé pour les imprimantes.
dmBitsPerPel
Pour les affichages, spécifie la résolution de couleur, en bits par pixel, d’un périphérique d’affichage.
Ce membre n’est pas utilisé pour les imprimantes.
dmPelsWidth
Pour les affichages, spécifie la largeur, en pixels, de la surface visible de l’appareil.
Ce membre n’est pas utilisé pour les imprimantes.
dmPelsHeight
Pour les affichages, spécifie la hauteur, en pixels, de la surface visible de l’appareil.
Ce membre n’est pas utilisé pour les imprimantes.
DUMMYUNIONNAME2
DUMMYUNIONNAME2.dmDisplayFlags
Spécifie le mode d’affichage de l’appareil. Ce membre peut être une combinaison des valeurs suivantes.
Valeur | Signification |
---|---|
DM_GRAYSCALE | Spécifie que l’affichage est un appareil non coloré. Si cet indicateur n’est pas défini, la couleur est supposée. Cet indicateur n’est plus valide. |
DM_INTERLACED | Spécifie que le mode d’affichage est entrelacé. Si l’indicateur n’est pas défini, non interlacé est supposé. |
Les pilotes d’affichage utilisent ce membre ; par exemple, dans la fonction ChangeDisplaySettings . Les pilotes d’imprimante n’utilisent pas ce membre.
DUMMYUNIONNAME2.dmNup
Pour les imprimantes, spécifie si le système d’impression gère l’impression « N-up » (lecture de plusieurs pages logiques EMF sur une seule page physique). La valeur de ce membre peut être l’une des suivantes :
Valeur | Signification |
---|---|
DMNUP_SYSTEM | Le système d’impression gère l’impression « N-up ». |
DMNUP_ONEUP | Le système d’impression ne gère pas l’impression « N-up ». Une application peut définir dmNup sur DMNUP_ONEUP si elle a l’intention d’effectuer seule l’impression « N-up ». |
Ce membre n’est pas utilisé pour les affichages.
dmDisplayFrequency
Pour les affichages, spécifie la fréquence, en hertz, d’un périphérique d’affichage dans son mode actuel.
Ce membre n’est pas utilisé pour les imprimantes.
dmICMMethod
Spécifie l’une des constantes préfixées DMICMMETHOD définies dans wingdi.h.
dmICMIntent
Spécifie l’une des constantes préfixées DMICM définies dans wingdi.h.
dmMediaType
Spécifie l’une des constantes préfixées DMMEDIA définies dans wingdi.h.
dmDitherType
Spécifie l’une des constantes préfixées DMDITHER définies dans wingdi.h.
dmReserved1
Est réservé à l’utilisation du système et doit être ignoré par le pilote.
dmReserved2
Est réservé à l’utilisation du système et doit être ignoré par le pilote.
dmPanningWidth
Est réservé à l’utilisation du système et doit être ignoré par le pilote.
dmPanningHeight
Est réservé à l’utilisation du système et doit être ignoré par le pilote.
Remarques
La structure DEVMODEW est la version Unicode de la structure DEVMODE (décrite dans la documentation Microsoft Windows SDK). Bien que les applications puissent utiliser la version ANSI ou Unicode de la structure, les pilotes sont requis pour utiliser la version Unicode.
Pour les pilotes d’imprimante, la structure DEVMODEW est utilisée pour spécifier les caractéristiques d’imprimante requises par un document d’impression. Il est également utilisé pour spécifier les caractéristiques par défaut d’une imprimante.
Immédiatement après les membres définis d’une structure DEVMODEW (souvent appelés membres publics), il peut y avoir un ensemble de membres définis par le pilote (souvent appelés membres DEVMODEW privés). Le pilote fournit la taille, en octets, de cette zone privée dans dmDriverExtra. Les membres privés définis par le pilote sont destinés à une utilisation exclusive par le pilote. L’adresse de départ des membres privés peut être référencée à l’aide du membre dmSize comme suit :
PVOID pvDriverData = (PVOID) (((BYTE *) pdm) + (pdm->dmSize));
Un pilote peut s’appuyer sur le spouleur pour passer une mémoire tampon DEVMODEW qui n’est pas inférieure à (dmSize + dmDriverExtra) octets. Par conséquent, le pilote peut lire en toute sécurité ce nombre d’octets à partir du début de la mémoire tampon sans provoquer de violation d’accès et sans avoir à sonder la mémoire.
Avant de lire EMF, GDI appelle le spouleur pour valider le contenu de la partie publique de la mémoire tampon DEVMODEW. Si la mémoire tampon DEVMODEW ne passe pas les tests de validation effectués dans le spouleur, GDI ne transmet pas la mémoire tampon au pilote d’imprimante.
Dans Windows XP, un nouveau membre de struct a été ajouté. Ce membre de struct contient un membre de structure DEVMODEW existant, dmPosition, ainsi que deux nouveaux membres, dmDisplayOrientation et dmDisplayFixedOutput. Ces membres sont décrits dans la section Membres précédente.
De même, pour Windows XP, plusieurs membres de la structure DEVMODEW ont été déplacés vers différents emplacements dans cette structure. Les membres dmScale, dmCopies, dmDefaultSource et dmPrintQuality ont été ajoutés au membre struct contenant les membres dmOrientation, dmPaperSize, dmPaperLength et dmPaperWidth .
Notes
L’en-tête wingdi.h définit DEVMODE en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | wingdi.h (inclure Wingdi.h) |