' Shown below is some sample code you can use to change certain printer settings.  
' This code is intended as an example and is not supported by Microsoft.

Type zwtDevModeStr
    rgb As String * 64
End Type

Type zwtDeviceMode
    dmDeviceName As String * 32
    dmSpecVersion As Integer
    dmDriverVersion As Integer
    dmSize As Integer
    dmDriverExtra As Integer
    dmFields As Long
    dmOrientation As Integer
    dmPaperSize As Integer
    dmPaperLength As Integer
    dmPaperWidth As Integer
    dmScale As Integer
    dmCopies As Integer
    dmDefaultSource As Integer
    dmPrintQuality As Integer
    dmColor As Integer
    dmDuplex As Integer
End Type

'   The routine reads the current printer device mode information for the szReport
'   ('PrtDevMode' property) in to DevMode structure and overwrites the PaperSize field
'   with the user defined paper size. The routine sets the width of the paper
'   to the Label Width, and length of the paper to the one label height.
'   the routine called only for the dot matrix mailing labels, and will work
'   only if dot matrix printer setup as default printer.
'
Private Sub DotMxSetup (szReport As String)
    Dim dm As zwtDevModeStr
    Dim DevMode As zwtDeviceMode

Const psUserDefined = 256  ' User defined PaperSize
Const mmInInch = 254       ' mm in one inch
Const dxExtra = 360
Const dmAllFields = 26127  ' all fileds has been initialized

    If Not IsNull(Reports(szReport).PrtDevMode) Then
	dm.rgb = Reports(szReport).PrtDevMode   ' read default device mode
	LSet DevMode = dm
	DevMode.dmFields = dmAllFields
	DevMode.dmPaperSize = psUserDefined
	DevMode.dmPaperLength = ((ptLabelSize.y + dxdySpace.y) / zwcTwipsInch) * mmInInch
	DevMode.dmPaperWidth = (((ptLabelSize.x + dxdySpace.x) * cItemsAcross + xLeftMargin + xRightMargin) / zwcTwipsInch) * mmInInch
	LSet dm = DevMode
	Reports(szReport).PrtDevMode = dm.rgb   ' write new device mode
    End If
End Sub