private static void UpdateSettings(NativeMethods.PAGESETUPDLG data, PageSettings pageSettings, PrinterSettings printerSettings) { // SetHDevMode demands AllPrintingAndUnmanagedCode Permission : Since we are calling that function we should Assert the permision, IntSecurity.AllPrintingAndUnmanagedCode.Assert(); try { pageSettings.SetHdevmode(data.hDevMode); if (printerSettings != null) { printerSettings.SetHdevmode(data.hDevMode); printerSettings.SetHdevnames(data.hDevNames); } } finally { CodeAccessPermission.RevertAssert(); } Margins newMargins = new Margins(); newMargins.Left = data.marginLeft; newMargins.Top = data.marginTop; newMargins.Right = data.marginRight; newMargins.Bottom = data.marginBottom; PrinterUnit fromUnit = ((data.Flags & NativeMethods.PSD_INHUNDREDTHSOFMILLIMETERS) != 0) ? PrinterUnit.HundredthsOfAMillimeter : PrinterUnit.ThousandthsOfAnInch; pageSettings.Margins = PrinterUnitConvert.Convert(newMargins, fromUnit, PrinterUnit.Display); }
public void SetHdevnames_IntPtr_Success() { var printerSettings = new PrinterSettings(); var newPrinterSettings = new PrinterSettings(); IntPtr handle = printerSettings.GetHdevnames(); newPrinterSettings.SetHdevnames(handle); Assert.Equal(newPrinterSettings.PrinterName, printerSettings.PrinterName); }
// Due to the nature of PRINTDLGEX vs PRINTDLG, separate but similar methods // are required for updating the settings from the structure utilized by the dialog. // Take information from print dialog and put in PrinterSettings private static void UpdatePrinterSettings(IntPtr hDevMode, IntPtr hDevNames, short copies, int flags, PrinterSettings settings, PageSettings pageSettings) { // Mode settings.SetHdevmode(hDevMode); settings.SetHdevnames(hDevNames); if (pageSettings != null) { pageSettings.SetHdevmode(hDevMode); } //Check for Copies == 1 since we might get the Right number of Copies from hdevMode.dmCopies... if (settings.Copies == 1) { settings.Copies = copies; } settings.PrintRange = (PrintRange)(flags & printRangeMask); }
private static void UpdateSettings(NativeMethods.PAGESETUPDLG data, PageSettings pageSettings, PrinterSettings printerSettings) { pageSettings.SetHdevmode(data.hDevMode); if (printerSettings != null) { printerSettings.SetHdevmode(data.hDevMode); printerSettings.SetHdevnames(data.hDevNames); } Margins newMargins = new Margins(); newMargins.Left = data.marginLeft; newMargins.Top = data.marginTop; newMargins.Right = data.marginRight; newMargins.Bottom = data.marginBottom; PrinterUnit fromUnit = ((data.Flags & NativeMethods.PSD_INHUNDREDTHSOFMILLIMETERS) != 0) ? PrinterUnit.HundredthsOfAMillimeter : PrinterUnit.ThousandthsOfAnInch; pageSettings.Margins = PrinterUnitConvert.Convert(newMargins, fromUnit, PrinterUnit.Display); }
// Take information from print dialog and put in PrinterSettings private static void UpdatePrinterSettings(NativeMethods.PRINTDLG data, PrinterSettings settings, PageSettings pageSettings) { // Mode settings.SetHdevmode(data.hDevMode); settings.SetHdevnames(data.hDevNames); if (pageSettings != null) { pageSettings.SetHdevmode(data.hDevMode); } // PrintDlg int flags = data.Flags; //Check for Copies == 1 since we might get the Right number of Copies from hdevMode.dmCopies... //this is Native PrintDialogs BUG... if (settings.Copies == 1) { settings.Copies = data.nCopies; } settings.PrintRange = (PrintRange)(flags & printRangeMask); }