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 3Dlabs Permedia3.
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 à CCHDEVICENAME, le spouleur le tronque pour s’adapter au 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 affecté 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 et spécifiés par les pilotes 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 identifiant 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 à 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 d’un millimètre. Cette valeur remplace la longueur du papier spécifié par l'dmPaperSize membre, 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 d’un millimètre. Cette valeur remplace la largeur du papier spécifié 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 par lequel l’image doit être mise à l’échelle pour l’impression. La taille de la page de l’image est mise à l’échelle vers la page physique par un facteur de dmScale/100. Par exemple, une image de 17 pouces de 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 tant que demi-taille et ajuster sur le papier de taille de 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 la corbeille 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 constantes négatives 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 de l’angle supérieur gauche de l’affichage, dans les coordonnées de bureau. Ce membre est utilisé pour déterminer la position relative des moniteurs dans un environnement de surveillance multiple.
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 bit DM_DISPLAYORIENTATION est défini dans le membre dmFields
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) à partir de 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) à partir 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) à partir de celle de DMDO_DEFAULT. |
Ce membre n’est pas utilisé pour les imprimantes.
Pour plus d’informations, consultez Retour des modes d’affichage : 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 affichage à résolution supérieure. Par exemple, si la résolution d’un appareil d’affichage est fixe à 1024 X 768 et que son mode est défini sur 640 x 480, l’appareil peut afficher une image 640 X 480 dans l’espace d’écran 1024 X 768, ou étirer l’image 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 le centreant dans l’espace d’écran plus grand. |
DMDFO_STRETCH | L’appareil d’affichage présente une image en mode 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 Retour des modes d’affichage : DrvGetModes.
dmColor
Pour les imprimantes, spécifie si une imprimante couleur doit imprimer la couleur ou le 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 duplex (double face) pour les imprimantes compatibles duplex. Ce membre peut être l’une des valeurs suivantes :
DMDUP_HORIZONTAL
Imprimez les deux côtés à l’aide de la liaison de bord court.
DMDUP_SIMPLEX
Imprimez un seul côté.
DMDUP_VERTICAL
Imprimez à deux côtés, à l’aide de 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 comment les polices TrueType doivent être imprimées. Ce membre doit être l’une des constantes de préfixe 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 compilées. Ce membre peut être 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 ; tels que « Lettre » ou « Légal ». Il doit s’agir d’un nom qui peut être obtenu en appelant la fonction 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 appareil d’affichage et doit être égal à l'
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 appareil d’affichage.
Ce membre n’est pas utilisé pour les imprimantes.
dmPelsWidth
Pour les affichages, spécifie la largeur, en pixels, de l’aire d’appareil visible.
Ce membre n’est pas utilisé pour les imprimantes.
dmPelsHeight
Pour les affichages, spécifie la hauteur, en pixels, de l’aire d’appareil visible.
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 noncolore. 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, il est supposé qu’il n’est pas pris en compte. |
Afficher les pilotes 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 l’impression « N-up » seule. |
Ce membre n’est pas utilisé pour les affichages.
dmDisplayFrequency
Pour les affichages, spécifie la fréquence, en hertz, d’un appareil d’affichage en 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 avec préfixe 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
Pour les pilotes d’imprimante, la structure DEVMODEW est utilisée pour spécifier les caractéristiques de l’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 par 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 utilisés exclusivement par le pilote. L’adresse de départ des membres privés peut être référencée à l’aide de la dmSize membre 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 struct membre a été ajouté. Ce membre de structure 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.
En outre, pour Windows XP, plusieurs membres de la structure DEVMODEW ont été déplacés vers différents emplacements de cette structure. LesdmScale
Note
L’en-tête wingdi.h définit DEVMODE comme 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. Le mélange 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.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | wingdi.h (include Wingdi.h) |