La solution n'est pas aussi simple
Voici un bout de code pour débuter
Ce code ouvre la boîte de dialogue système pour l'impression.
Beaucoup de cas sont possibles, par exempe si le driver ne supporte pas l'impression de plusieurs copies, la valeur du nombre de copies n'est pas retournée dans la même variable ni d'ailleurs dans la même structure.
Il faut lire la doc MS pour adapter au besoin.
Code : Tout sélectionner
Structure PRINTDLGA
lStructSize.l
hwndOwner.l
hDevMode.l
hDevNames.l
hDC.l
Flags.l
nFromPage.w
nToPage.w
nMinPage.w
nMaxPage.w
nCopies.w
hInstance.l
lCustData.l
*lpfnPrintHook.l
*lpfnSetupHook.l
*lpPrintTemplateName.b
*lpSetupTemplateName.b
hPrintTemplate.l
hSetupTemplate.l
EndStructure
Structure PRINTDLGW
lStructSize.l
hwndOwner.l
hDevMode.l
hDevNames.l
hDC.l
Flags.l
nFromPage.w
nToPage.w
nMinPage.w
nMaxPage.w
nCopies.w
hInstance.l
lCustData.l
*lpfnPrintHook.l
*lpfnSetupHook.l
*lpPrintTemplateName.w
*lpSetupTemplateName.w
hPrintTemplate.l
hSetupTemplate.l
EndStructure
Enumeration
#Fenetre_Principale
#Bouton
EndEnumeration
If OpenWindow(#Fenetre_Principale, 0, 0, 600, 400, #PB_Window_WindowCentered|#PB_Window_SystemMenu, "Essai page impression")
If CreateGadgetList(WindowID())
If ButtonGadget(#Bouton, 50, 50, 120, 40, "Imprimer")
EndIf
; ici il faut remplir un certain nombre de valeur
lppd.PRINTDLGA\lStructSize = SizeOf(PRINTDLGA) ; la taille de la structure
lppd\hwndOwner = WindowID(#Fenetre_Principale) ; la fenêtre propriétaire de la boîte de dialogue
; le paramètre hDevMode permet d'initialiser la boite avec des valeurs
; doit être à 0 si pas utilisé
lppd\hwndOwner = 0
; le paramètre hDevNames permet d'initialiser le nom du driver, le nom de l'imprimante et
; le nom du port d'impression
; si on initialise pas avec cette variable, MS utilsie les valeurs du Win.ini. Dans ce cas ce membre doit
; être à 0. Au retour (d'après la doc, cette variable contient le handle du bloc mémoire alloué
; pour la structure DEVMODE utilisée par défaut)
lppd\hDevNames = 0
; si les 2 valeurs lppd\hwndOwner et lppd\hDevNames valent 0, la boîte de dialogue est initialisée
; avec l'imprimante par défaut courante.
Repeat
Select WaitWindowEvent()
Case #PB_EventGadget
Select EventGadgetID()
Case #Bouton
PrintDlg_(@lppd.PRINTDLGA)
EndSelect
Case #PB_EventCloseWindow
quitter + 1
EndSelect
Until quitter
endif
EndIf