DevMode (Structures)
Last changed: shtolliver-47.227.243.115

.
Summary
Contains information about the initialization and environment of a printer or a display device.

C# Definition:

[StructLayout(LayoutKind.Sequential)]
public struct DEVMODE
{
     public const int CCHDEVICENAME = 32;
     public const int CCHFORMNAME   = 32;

     [MarshalAs(UnmanagedType.ByValTStr, SizeConst = CCHDEVICENAME)]
     public string dmDeviceName;
     public short  dmSpecVersion;
     public short  dmDriverVersion;
     public short  dmSize;
     public short  dmDriverExtra;
     public int    dmFields;

     public short  dmOrientation;
     public short  dmPaperSize;
     public short  dmPaperLength;
     public short  dmPaperWidth;

     public short  dmScale;
     public short  dmCopies;
     public short  dmDefaultSource;
     public short  dmPrintQuality;
     public short  dmColor;
     public short  dmDuplex;
     public short  dmYResolution;
     public short  dmTTOption;
     public short  dmCollate;
     [MarshalAs(UnmanagedType.ByValTStr, SizeConst = CCHFORMNAME)]
     public string dmFormName;
     public short  dmLogPixels;
     public short  dmBitsPerPel;
     public int    dmPelsWidth;
     public int    dmPelsHeight;
     public int    dmDisplayFlags;
     public int    dmDisplayFrequency;

     public int    dmICMMethod;
     public int    dmICMIntent;
     public int    dmMediaType;
     public int    dmDitherType;
     public int    dmReserved1;
     public int    dmReserved2;
     public int    dmPanningWidth;
     public int    dmPanningHeight;
}

VB Definition:

<StructLayout(LayoutKind.Explicit)>
Public Structure DEVMODE
     Public Shared Const CCHDEVICENAME As Integer = 32
     Public Shared Const CCHFORMNAME As Integer = 32

     <VBFixedString(CCHDEVICENAME), MarshalAs(UnmanagedType.ByValTStr, SizeConst:=CCHDEVICENAME)> _
     Public dmDeviceName As String
     Dim dmSpecVersion As Short
     Dim dmDriverVersion As Short
     Dim dmSize As Short
     Dim dmDriverExtra As Short
     Dim dmFields As Integer

     Dim dmOrientation As Short
     Dim dmPaperSize As Short
     Dim dmPaperLength As Short
     Dim dmPaperWidth As Short

     Dim dmScale As Short
     Dim dmCopies As Short
     Dim dmDefaultSource As Short
     Dim dmPrintQuality As Short
     Dim dmColor As Short    
     Dim dmDuplex As Short
     Dim dmYResolution As Short
     Dim dmTTOption As Short
     Dim dmCollate As Short
     <VBFixedString(CCHFORMNAME), MarshalAs(UnmanagedType.ByValTStr, SizeConst:=CCHFORMNAME)> _
     Public dmFormName As String
     Dim dmLogPixels As Short
     Dim dmBitsPerPel As Integer
     Dim dmPelsWidth As Integer
     Dim dmPelsHeight As Integer
     Dim dmDisplayFlags As Integer
     Dim dmDisplayFrequency As Integer

     Dim dmICMMethod As Integer
     Dim dmICMIntent As Integer
     Dim dmMediaType As Integer
     Dim dmDitherType As Integer
     Dim dmReserved1 As Integer
     Dim dmReserved2 As Integer
     Dim dmPanningWidth As Integer
     Dim dmPanningHeight As Integer
End Structure

Notes:

C# add:

using System.Runtime.InteropServices;

Vb.NET add:

Imports System.Runtime.InteropServices

Tips & Tricks:

Since the DEVMODE members beyond dmDisplayFrequency do not have to be declared, the structure can vary in size. You should set dmSize to effective size of your implemetation before calling API functions:

DEVMODE d = new DEVMODE();
d.dmSize = Marshal.SizeOf(typeof(DEVMODE));

This way the API is informed of the version of DEVMODE used.

Sample Code:

Please add some!

Alternative Managed API:

Do you know one? Please contribute it!

Documentation
DEVMODE on MSDN