Hello,
You can use
Marshal
class and it methods
PtrToStructure
and
StructureToPtr
to convert your
pDevMode
IntPtr. The Unicode version of the structure
DEVMODE
will be:
[StructLayout(LayoutKind.Explicit,CharSet=CharSet.Unicode)]
public struct DEVMODEW
{
[FieldOffset(0),MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)]
public string dmDeviceName;
[FieldOffset(64),MarshalAs(UnmanagedType.U2)]
public int dmSpecVersion;
[FieldOffset(66),MarshalAs(UnmanagedType.U2)]
public int dmDriverVersion;
[FieldOffset(68),MarshalAs(UnmanagedType.U2)]
public int dmSize;
[FieldOffset(70),MarshalAs(UnmanagedType.U2)]
public int dmDriverExtra;
[FieldOffset(74),MarshalAs(UnmanagedType.U4)]
public int dmFields;
[FieldOffset(78),MarshalAs(UnmanagedType.I2)]
public int dmOrientation;
[FieldOffset(80),MarshalAs(UnmanagedType.I2)]
public int dmPaperSize;
[FieldOffset(82),MarshalAs(UnmanagedType.I2)]
public int dmPaperLength;
[FieldOffset(84),MarshalAs(UnmanagedType.I2)]
public int dmPaperWidth;
[FieldOffset(86),MarshalAs(UnmanagedType.I2)]
public int dmScale;
[FieldOffset(88),MarshalAs(UnmanagedType.I2)]
public int dmCopies;
[FieldOffset(90),MarshalAs(UnmanagedType.I2)]
public int dmDefaultSource;
[FieldOffset(92),MarshalAs(UnmanagedType.I2)]
public int dmPrintQuality;
[FieldOffset(78)]
public Point dmPosition;
[FieldOffset(86),MarshalAs(UnmanagedType.U4)]
public int dmDisplayOrientation;
[FieldOffset(90),MarshalAs(UnmanagedType.U4)]
public int dmDisplayFixedOutput;
[FieldOffset(94),MarshalAs(UnmanagedType.I2)]
public int dmColor;
[FieldOffset(96),MarshalAs(UnmanagedType.I2)]
public int dmDuplex;
[FieldOffset(98),MarshalAs(UnmanagedType.I2)]
public int dmYResolution;
[FieldOffset(100),MarshalAs(UnmanagedType.I2)]
public int dmTTOption;
[FieldOffset(102),MarshalAs(UnmanagedType.I2)]
public int dmCollate;
[FieldOffset(104),MarshalAs(UnmanagedType.ByValTStr,SizeConst=32)]
public string dmFormName;
[FieldOffset(168),MarshalAs(UnmanagedType.U2)]
public int dmLogPixels;
[FieldOffset(170),MarshalAs(UnmanagedType.U4)]
public int dmBitsPerPel;
[FieldOffset(174),MarshalAs(UnmanagedType.U4)]
public int dmPelsWidth;
[FieldOffset(178),MarshalAs(UnmanagedType.U4)]
public int dmPelsHeight;
[FieldOffset(182),MarshalAs(UnmanagedType.U4)]
public int dmDisplayFlags;
[FieldOffset(182),MarshalAs(UnmanagedType.U4)]
public int dmNup;
[FieldOffset(186),MarshalAs(UnmanagedType.U4)]
public int dmDisplayFrequency;
[FieldOffset(190),MarshalAs(UnmanagedType.U4)]
public int dmICMMethod;
[FieldOffset(194),MarshalAs(UnmanagedType.U4)]
public int dmICMIntent;
[FieldOffset(198),MarshalAs(UnmanagedType.U4)]
public int dmMediaType;
[FieldOffset(202),MarshalAs(UnmanagedType.U4)]
public int dmDitherType;
[FieldOffset(206),MarshalAs(UnmanagedType.U4)]
public int dmReserved1;
[FieldOffset(210),MarshalAs(UnmanagedType.U4)]
public int dmReserved2;
[FieldOffset(214),MarshalAs(UnmanagedType.U4)]
public int dmPanningWidth;
[FieldOffset(218),MarshalAs(UnmanagedType.U4)]
public int dmPanningHeight;
}
Regards,
Maxim.