Partager via


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 , 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) à 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 Win32.

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'ulLogPixels membre 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 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 DEVMODEW est la version Unicode de la structure DEVMODE (décrite dans la documentation du Kit de développement logiciel (SDK) Microsoft Windows). Bien que les applications puissent utiliser la version ANSI ou Unicode de la structure, les pilotes doivent utiliser la version Unicode.

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.

Avertissement Windows confirme uniquement que la partie publique de DEVMODEW est valide. Toutefois, les données endommagées dans la partie privée de la structure peuvent entraîner un blocage du code du pilote dans l’application ou dans le processus du spouleur. Par conséquent, avant chaque utilisation des données DEVMODEW, le pilote doit vérifier que la partie privée de DEVMODEW est bien formée.
 
Dans Windows 2000, un nouveau membre union a été ajouté à la structure DEVMODEW. Ce membre union contient un membre de structure DEVMODEW existant, dmDisplayFlags, ainsi qu’un nouveau membre, dmNup. Ce membre est décrit dans la section Membres précédente.

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 , dmCopies, dmDefaultSourceet membres dmPrintQuality ont été ajoutés au struct Membre contenant ledmOrientation , dmPaperSize, dmPaperLengthet membres dmPaperWidth.

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)

Voir aussi

DOCUMENTPROPERTYHEADER

DrvConvertDevMode

DrvDeviceCapabilities

DrvGetModes