
Para mostrar el diálogo "Preparar página" (como el del programa WordPad) :
Declaramos en un módulo:
Type POINTAPI
x As Long
y As Long
End Type
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Type PAGESETUPDLG
lStructSize As Long
hwndOwner As Long
hDevMode As Long
hDevNames As Long
flags As Long
ptPaperSize As POINTAPI
rtMinMargin As RECT
rtMargin As RECT
hInstance As Long
lCustData As Long
lpfnPageSetupHook As Long
lpfnPagePaintHook As Long
lpPageSetupTemplateName As String
hPageSetupTemplate As Long
End Type
Const PSD_RETURNDEFAULT = &H400
Const PSD_DEFAULTMINMARGINS = &H0
Const PSD_DISABLEMARGINS = &H10
Const PSD_DISABLEORIENTATION = &H100
Const PSD_DISABLEPAGEPAINTING = &H80000
Const PSD_DISABLEPAPER = &H200
Const PSD_DISABLEPRINTER = &H20
Const PSD_ENABLEPAGEPAINTHOOK = &H40000
Const PSD_ENABLEPAGESETUPHOOK = &H2000
Const PSD_ENABLEPAGESETUPTEMPLATE = &H8000
Const PSD_ENABLEPAGESETUPTEMPLATEHANDLE = &H20000
Const PSD_INHUNDREDTHSOFMILLIMETERS = &H8
Const PSD_INTHOUSANDTHSOFINCHES = &H4
Const PSD_INWININIINTLMEASURE = &H0
Const PSD_MARGINS = &H2
Const PSD_MINMARGINS = &H1
Const PSD_NOWARNING = &H80
Const PSD_SHOWHELP = &H800
Declare Function PAGESETUPDLG Lib "comdlg32.dll" Alias "PageSetupDlgA" (pPagesetupdlg As PAGESETUPDLG) As Long
Y ahora para sacar el diálogo :
Dim l As Long, page As PAGESETUPDLG
Dim hDevNames As Long, hDevMode As Long
page.lStructSize = 84
page.hwndOwner = Me.hwnd
page.hDevNames = 0&
page.hDevMode = 0&
' para que nos devuelva las variables hDevNames y hDevMode
' inicializadas para la impresora por defecto
page.flags = PSD_RETURNDEFAULT
l = PAGESETUPDLG(page)
page.flags = 0
' sacamos el diálogo
l = PAGESETUPDLG(page)
Podemos usar las constantes vistas anteriormente para configurar qué opciones queremos del diálogo.
En la variable page nos devuelve lo que haya seleccionado el usuario.

