Private Sub ApplyPageSetup()
DIm m_document As PrintDocument = New PrintDocument()
Dim pageSetup As New PageSetupDialog()
pageSetup.Document = m_document
Try
Dim pIntPtr As IntPtr = New IntPtr(m_pHookhelper.ActiveView.ScreenDisplay.hWnd)
Dim pCtrl As System.Windows.Forms.Control = System.Windows.Forms.Form.FromHandle(pIntPtr)
Dim result As DialogResult = pageSetup.ShowDialog(pCtrl)
If result = DialogResult.OK Then
'将打印机设置应用到打印文档
m_document.PrinterSettings = pageSetup.PrinterSettings '将选中的打印机设置设置到打印文档
m_document.DefaultPageSettings = pageSetup.PageSettings '将选中的页面设置设置到打印文档
'设置默认纸张大小
Dim i As Integer
For i = 0 To pageSetup.PrinterSettings.PaperSizes.Count - 1
If pageSetup.PrinterSettings.PaperSizes.Item(i).Kind = m_document.DefaultPageSettings().PaperSize().Kind Then
m_document.DefaultPageSettings().PaperSize() = pageSetup.PrinterSettings.PaperSizes.Item(i)
Exit For
End If
Next i
'将打印文档的打印机设置应用到PageLayout
Dim paper As IPaper = New PaperClass()
Dim printer As IPrinter = New EmfPrinterClass()
paper.Attach(pageSetup.PrinterSettings.GetHdevmode(pageSetup.PageSettings).ToInt32(), pageSetup.PrinterSettings.GetHdevnames().ToInt32())
printer.Paper = paper
m_pPageLayout.Printer = printer
m_pPageLayout.Refresh(ESRI.ArcGIS.Carto.esriViewDrawPhase.esriViewGraphics, Nothing, Nothing)
End If
Catch ex As Exception
)
End Try
pageSetup.Dispose()
End Sub