DEVMODEW-Struktur (wingdi.h)

Die DEVMODEW-Struktur wird zum Angeben von Merkmalen von Anzeige- und Druckgeräten im Unicode-Zeichensatz (breit) verwendet.

Syntax

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;

Member

dmDeviceName[CCHDEVICENAME]

Gibt für eine Anzeige den Namen der DLL des Anzeigetreibers an. beispielsweise "perm3dd" für den 3Dlabs Permedia3-Anzeigetreiber.

Gibt für einen Drucker den "Anzeigenamen" an. beispielsweise "PCL/HP LaserJet" im Fall von PCL/HP LaserJet. Wenn der Name größer als CCHDEVICENAME-Zeichen ist, schneidet der Spooler ihn ab, um in das Array zu passen.

dmSpecVersion

Gibt die Versionsnummer dieser DEVMODEW-Struktur an. Die aktuelle Versionsnummer wird durch die DM_SPECVERSION Konstante in wingdi.h identifiziert.

dmDriverVersion

Gibt für einen Drucker die Vom Druckertreiberentwickler zugewiesene Versionsnummer des Druckertreibers an.

Anzeigetreiber können dieses Element auf DM_SPECVERSION festlegen.

dmSize

Gibt die Größe der öffentlichen DEVMODEW-Struktur in Bytes an, ohne private, treiberspezifische Member, die vom dmDriverExtra-Member identifiziert werden.

dmDriverExtra

Gibt die Anzahl der Bytes privater Treiberdaten an, die den Elementen der öffentlichen Struktur folgen. Wenn ein Gerätetreiber keine privaten DEVMODEW-Member bereitstellt, sollte dieser Member auf 0 festgelegt werden.

dmFields

Gibt Bitflags an, die identifizieren, welche der folgenden DEVMODEW-Member verwendet werden. Beispielsweise wird das DM_ORIENTATION-Flag festgelegt, wenn das dmOrientation-Element gültige Daten enthält. Die DM_XXX Flags sind in wingdi.h definiert.

DUMMYUNIONNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmOrientation

Gibt für Drucker die Papierausrichtung an. Dieses Element kann entweder DMORIENT_PORTRAIT oder DMORIENT_LANDSCAPE sein.

Dieses Element wird nicht für Anzeigen verwendet.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperSize

Gibt für Drucker die Größe des Papiers an, auf dem gedruckt werden soll. Dieser Member muss 0 sein, wenn die Länge und Breite des Papiers durch die Elemente dmPaperLength und dmPaperWidth angegeben werden. Andernfalls muss der dmPaperSize-Member eine der dmPAPER-Präfixkonstanten sein, die in wingdi.h definiert sind.

Dieses Element wird nicht für Anzeigen verwendet.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperLength

Gibt für Drucker die Länge des Papiers in Einheiten von 1/10 Millimeter an. Dieser Wert überschreibt die Länge des Papiers, das vom dmPaperSize-Element angegeben wird, und wird verwendet, wenn das Papier eine benutzerdefinierte Größe aufweist oder wenn es sich bei dem Gerät um einen Punktmatrixdrucker handelt, der eine Seite mit beliebiger Länge drucken kann.

Dieses Element wird nicht für Anzeigen verwendet.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperWidth

Gibt für Drucker die Breite des Papiers in Einheiten von 1/10 millimeter an. Dieser Wert überschreibt die Breite des Papiers, das vom dmPaperSize-Element angegeben wird. Dieses Element muss verwendet werden, wenn dmPaperLength verwendet wird.

Dieses Element wird nicht für Anzeigen verwendet.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmScale

Gibt für Drucker den Prozentsatz an, um den das Bild für den Druck skaliert werden soll. Die Seitengröße des Bilds wird um den Faktor dmScale/100 auf die physische Seite skaliert. Beispielsweise erfordert ein Bild von 17 Zoll x 22 Zoll mit einem Skalierungswert von 100 Papier 17 x 22 Zoll, während dasselbe Bild mit einem Skalierungswert von 50 als Halbformat gedruckt werden sollte und auf Papier im Briefformat passen sollte.

Dieses Element wird nicht für Anzeigen verwendet.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmCopies

Gibt für Drucker die Anzahl der zu druckenden Kopien an, wenn das Gerät mehrere Kopien unterstützt.

Dieses Element wird nicht für Anzeigen verwendet.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmDefaultSource

Gibt für Drucker den Standardeingabebehälter des Druckers an. Dies muss eine der DMBIN-Präfixkonstanten sein, die in wingdi.h definiert sind. Wenn die angegebene Konstante DMBIN_FORMSOURCE ist, sollte der Eingabebehälter automatisch ausgewählt werden.

Dieses Element wird nicht für Anzeigen verwendet.

DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPrintQuality

Gibt für Drucker die Druckerauflösung an. Die folgenden negativen Konstantenwerte werden in wingdi.h definiert:

DMRES_HIGH
DMRES_MEDIUM
DMRES_LOW
DMRES_DRAFT

Wenn ein positiver Wert angegeben wird, stellt er die Anzahl der Punkte pro Zoll (DPI) für die x-Auflösung dar, und die y-Auflösung wird von dmYResolution angegeben.

Dieses Element wird nicht für Anzeigen verwendet.

DUMMYUNIONNAME.dmPosition

DUMMYUNIONNAME.DUMMYSTRUCTNAME2

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmPosition

Gibt für Anzeigen eine POINTL-Struktur an, die die x- und y-Koordinaten der oberen linken Ecke der Anzeige in Desktopkoordinaten enthält. Dieses Element wird verwendet, um die relative Position von Monitoren in einer Umgebung mit mehreren Monitoren zu bestimmen.

Dieses Element wird nicht für Drucker verwendet.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayOrientation

Dieser Member ist nur für Windows XP und höher definiert.

Gibt für Displays die Ausrichtung an, an der Bilder angezeigt werden sollen. Wenn das DM_DISPLAYORIENTATION Bit im dmFields-Member nicht festgelegt ist, muss dieses Element auf 0 festgelegt werden. Wenn das DM_DISPLAYORIENTATION Bit im dmFields-Member festgelegt ist, muss dieses Element auf einen der folgenden Werte festgelegt werden:

Wert Bedeutung
DMDO_DEFAULT Die Geräteausrichtung des aktuellen Modus entspricht der natürlichen Ausrichtung des Geräts und sollte als Standard verwendet werden.
DMDO_90 Die Ausrichtung des Anzeigegeräts ist um 90 Grad (im Uhrzeigersinn gemessen) von der Ausrichtung DMDO_DEFAULT.
DMDO_180 Die Ausrichtung des Anzeigegeräts ist um 180 Grad (im Uhrzeigersinn gemessen) gegenüber der ausrichtung von DMDO_DEFAULT.
DMDO_270 Die Ausrichtung des Anzeigegeräts ist 270 Grad (im Uhrzeigersinn gemessen) von der Ausrichtung des DMDO_DEFAULT.
 

Dieses Element wird nicht für Drucker verwendet.

Weitere Informationen finden Sie unter Zurückgeben von Anzeigemodi: DrvGetModes.

DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayFixedOutput

Dieser Member ist nur für Windows XP und höher definiert.

Gibt für Displays mit fester Auflösung an, wie das Gerät einen Modus mit niedrigerer Auflösung auf einer Anzeige mit höherer Auflösung darstellen kann. Wenn die Auflösung eines Anzeigegeräts beispielsweise auf 1024 x 768 festgelegt ist und dessen Modus auf 640 x 480 festgelegt ist, kann das Gerät entweder ein Bild von 640 x 480 innerhalb des 1024 x 768-Bildschirmbereichs anzeigen oder das Bild mit 640 x 480 strecken, um den größeren Bildschirmraum zu füllen.

Wenn das DM_DISPLAYFIXEDOUTPUT Bit im dmFields-Element nicht festgelegt ist, muss dieses Element auf 0 festgelegt werden. Wenn das DM_DISPLAYFIXEDOUTPUT Bit im dmFields-Element festgelegt ist, muss dieses Element auf einen der folgenden Werte festgelegt werden:

Wert Bedeutung
DMDFO_CENTER Das Anzeigegerät stellt ein Bild im Modus mit niedrigerer Auflösung dar, indem es im größeren Bildschirmbereich zentriert wird.
DMDFO_STRETCH Das Anzeigegerät stellt ein Bild im Modus mit niedrigerer Auflösung dar, indem es es spannt, um den größeren Bildschirmraum zu füllen.
 

Dieses Element wird nicht für Drucker verwendet.

Weitere Informationen finden Sie unter Zurückgeben von Anzeigemodi: DrvGetModes.

dmColor

Gibt für Drucker an, ob ein Farbdrucker Farbe oder Monochrom drucken soll. Dieses Element kann einer von DMCOLOR_COLOR oder DMCOLOR_MONOCHROME sein.

Dieses Element wird nicht für Anzeigen verwendet.

dmDuplex

Gibt für Drucker den Duplexdruck (beidseitig) für duplexfähige Drucker an. Dieser Member kann einer der folgenden Werte sein:

DMDUP_HORIZONTAL

Drucken Sie doppelseitig mit kurzer Kantenbindung.

DMDUP_SIMPLEX

Einseitiges Drucken.

DMDUP_VERTICAL

Drucken Sie doppelseitig mit langer Kantenbindung.

Dieses Element wird nicht für Anzeigen verwendet.

dmYResolution

Gibt für Drucker die y-Auflösung des Druckers in DPI an. Wenn dieser Member verwendet wird, gibt das dmPrintQuality-Element die x-Auflösung an.

Dieses Element wird nicht für Anzeigen verwendet.

dmTTOption

Gibt für Drucker an, wie TrueType-Schriftarten gedruckt werden sollen. Dieser Member muss eine der in wingdi.h definierten DMTT-Präfixkonstanten sein.

Dieser Member wird nicht für Anzeigen verwendet.

dmCollate

Gibt für Drucker an, ob mehrere Kopien sortiert werden sollen. Dieser Member kann einer der folgenden Werte sein:

DMCOLLATE_TRUE

Sortieren sie beim Drucken mehrerer Kopien.

DMCOLLATE_FALSE

Beim Drucken mehrerer Kopien nicht sortieren.

Dieser Member wird nicht für Anzeigen verwendet.

dmFormName[CCHFORMNAME]

Gibt für Drucker den Namen des zu verwendenden Formulars an. z. B. "Letter" oder "Legal". Dies muss ein Name sein, der durch Aufrufen der Win32 EnumForms-Funktion abgerufen werden kann.

Dieser Member wird nicht für Anzeigen verwendet.

dmLogPixels

Gibt für Displays die Anzahl der logischen Pixel pro Zoll eines Anzeigegeräts an und sollte gleich dem ulLogPixels-Element der GDIINFO-Struktur sein.

Dieser Member wird nicht für Drucker verwendet.

dmBitsPerPel

Gibt für Displays die Farbauflösung eines Anzeigegeräts in Bits pro Pixel an.

Dieser Member wird nicht für Drucker verwendet.

dmPelsWidth

Gibt für Anzeigen die Breite der sichtbaren Geräteoberfläche in Pixel an.

Dieser Member wird nicht für Drucker verwendet.

dmPelsHeight

Gibt für Displays die Höhe der sichtbaren Geräteoberfläche in Pixel an.

Dieser Member wird nicht für Drucker verwendet.

DUMMYUNIONNAME2

DUMMYUNIONNAME2.dmDisplayFlags

Gibt den Anzeigemodus des Geräts an. Dieser Member kann eine Kombination der folgenden Werte sein.

Wert Bedeutung
DM_GRAYSCALE Gibt an, dass die Anzeige ein nicht farbiges Gerät ist. Wenn dieses Flag nicht festgelegt ist, wird die Farbe angenommen. Dieses Flag ist nicht mehr gültig.
DM_INTERLACED Gibt an, dass der Anzeigemodus interlaced ist. Wenn das Flag nicht festgelegt ist, wird von noninterlaced ausgegangen.

Anzeigetreiber verwenden dieses Element; beispielsweise in der ChangeDisplaySettings-Funktion . Druckertreiber verwenden dieses Element nicht.

DUMMYUNIONNAME2.dmNup

Gibt für Drucker an, ob das Drucksystem "N-up"-Druck verarbeitet (die Wiedergabe mehrerer logischer EMF-Seiten auf einer einzelnen physischen Seite). Der Wert dieses Members kann einer der folgenden sein:

Wert Bedeutung
DMNUP_SYSTEM Das Drucksystem verarbeitet den "N-up"-Druck.
DMNUP_ONEUP Das Drucksystem übernimmt keinen "N-up"-Druck. Eine Anwendung kann dmNup auf DMNUP_ONEUP festlegen, wenn sie den "N-Up"-Druck selbst durchführen möchte.
 

Dieser Member wird nicht für Anzeigen verwendet.

dmDisplayFrequency

Gibt für Anzeigen die Frequenz eines Anzeigegeräts im aktuellen Modus in Hertz an.

Dieser Member wird nicht für Drucker verwendet.

dmICMMethod

Gibt eine der in wingdi.h definierten Konstanten mit DMICMMETHOD-Präfix an.

dmICMIntent

Gibt eine der in wingdi.h definierten Konstanten mit DMICM-Präfix an.

dmMediaType

Gibt eine der in wingdi.h definierten DMMEDIA-Präfixkonstanten an.

dmDitherType

Gibt eine der in wingdi.h definierten DMDITHER-Präfixkonstanten an.

dmReserved1

Ist für die Systemverwendung reserviert und sollte vom Treiber ignoriert werden.

dmReserved2

Ist für die Systemverwendung reserviert und sollte vom Treiber ignoriert werden.

dmPanningWidth

Ist für die Systemverwendung reserviert und sollte vom Treiber ignoriert werden.

dmPanningHeight

Ist für die Systemverwendung reserviert und sollte vom Treiber ignoriert werden.

Hinweise

Die DEVMODEW-Struktur ist die Unicode-Version der DEVMODE-Struktur (beschrieben in der Microsoft Windows SDK-Dokumentation). Während Anwendungen entweder die ANSI- oder Unicode-Version der Struktur verwenden können, müssen Treiber die Unicode-Version verwenden.

Bei Druckertreibern wird die DEVMODEW-Struktur verwendet, um Druckereigenschaften anzugeben, die für ein Druckdokument erforderlich sind. Es wird auch verwendet, um die Standardmerkmale eines Druckers anzugeben.

Unmittelbar nach den definierten Membern einer DEVMODEW-Struktur (häufig als öffentliche Member bezeichnet) kann es eine Reihe von treiberdefinierte Member (häufig als private DEVMODEW-Member bezeichnet) geben. Der Treiber stellt die Größe dieses privaten Bereichs in dmDriverExtra in Bytes bereit. Treiberdefinierte private Member sind für die exklusive Verwendung durch den Treiber bestimmt. Auf die Startadresse für die privaten Member kann mit dem dmSize-Member wie folgt verwiesen werden:

PVOID pvDriverData = (PVOID) (((BYTE *) pdm) + (pdm->dmSize));

Ein Treiber kann sich auf den Spooler verlassen, um einen DEVMODEW-Puffer zu übergeben, der nicht kleiner als (dmSize + dmDriverExtra) Bytes ist. Daher kann der Treiber diese Anzahl von Bytes sicher ab dem Anfang des Puffers lesen, ohne dass eine Zugriffsverletzung verursacht wird und der Arbeitsspeicher nicht getestet werden muss.

Vor der Wiedergabe von EMF ruft GDI den Spooler auf, um den Inhalt des öffentlichen Teils des DEVMODEW-Puffers zu überprüfen. Wenn der DEVMODEW-Puffer die im Spooler durchgeführten Validierungstests nicht besteht, übergibt GDI den Puffer nicht an den Druckertreiber.

Warnung Windows bestätigt nur, dass der öffentliche Teil von DEVMODEW gültig ist. Beschädigte Daten im privaten Teil der Struktur können jedoch dazu führen, dass Treibercode in der Anwendung oder im Spoolerprozess abstürzt. Daher sollte der Treiber vor jeder Verwendung von DEVMODEW-Daten überprüfen, ob der private Teil von DEVMODEW wohlgeformt ist.
 
In Windows 2000 wurde der DEVMODEW-Struktur ein neues Union-Element hinzugefügt. Dieses Union-Element enthält einen vorhandenen DEVMODEW-Strukturmember dmDisplayFlags zusammen mit dem neuen Element dmNup. Dieses Element wird im vorherigen Abschnitt Members beschrieben.

In Windows XP wurde ein neues Strukturelement hinzugefügt. Dieses Strukturmember enthält ein vorhandenes DEVMODEW-Strukturmember dmPosition zusammen mit zwei neuen Membern, dmDisplayOrientation und dmDisplayFixedOutput. Diese Member werden im vorherigen Abschnitt Mitglieder beschrieben.

Auch für Windows XP wurden mehrere Member der DEVMODEW-Struktur an verschiedene Speicherorte in dieser Struktur verschoben. Die Mitglieder dmScale, dmCopies, dmDefaultSource und dmPrintQuality wurden an das Strukturmember angefügt, das die Member dmOrientation, dmPaperSize, dmPaperLength und dmPaperWidth enthält.

Hinweis

Der wingdi.h-Header definiert DEVMODE als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht Codierungsneutral ist, kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Header wingdi.h (einschließlich Wingdi.h)

Weitere Informationen

DOCUMENTPROPERTYHEADER

DrvConvertDevMode

DrvDeviceCapabilities

DrvGetModes