PrintDlg (comdlg32)
Last changed: 185.232.21.150

.
Summary

C# Signature:

[DllImport("comdlg32.dll", CharSet=CharSet.Auto)]
static extern bool PrintDlg([In,Out] PRINTDLG lppd);

VB.NET Signature:

<DllImport("comdlg32.dll", CharSet:=CharSet.Auto)> _
Private Shared Function PrintDlg(<[In], Out> ByVal lppd As PRINTDLG) As Boolean
End Function

User-Defined Types:

PRINTDLG

Alternative Managed API:

System.Windows.Forms.PrintDialog

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

// Call the PrintDlg api from c#

public static void InvokePrintDlg (PrinterSettings printerSettings,

    IntPtr hwndDialogOwner)

{

    // PRINTDLG that will be passed to PrintDlg API function.
    PRINTDLG printdlg = new PRINTDLG();
    printdlg.lStructSize = Marshal.SizeOf(printdlg);             
    printdlg.hwndOwner = hwndDialogOwner;            
    // Pass the handles to the DEVMODE and DEVNAMES structures from the
    // printer settings object to the PRINTDLG so that the current
    // printsettings are displayed in the print setup dialog.
    printdlg.hDevMode = printerSettings.GetHdevmode();
    printdlg.hDevNames = printerSettings.GetHdevnames();
    // Uncomment the line below to indicate that only the print setup dialog should be shown.
    //printdlg.Flags = PD_PRINTSETUP;
    // Invoke the dialog.
    bool l = PrintDlg(printdlg);
    // Pass the resulting DEVMODE and DEVNAMES structs back to the
    // caller via the PrinterSettings object that was passed in.
    printerSettings.SetHdevmode(printdlg.hDevMode);
    printerSettings.SetHdevnames(printdlg.hDevNames);         

}

Documentation
PrintDlg on MSDN