UDF > WinAPIEx > Dialog >


_WinAPI_PrintDlgEx

Affiche une feuille de propriétés d'impression qui permet à l'utilisateur de spécifier les propriétés d'un travail d'impression particulier

#include <WinAPIDlg.au3>
_WinAPI_PrintDlgEx ( ByRef $tPRINTDLGEX )

Paramètre

$tPRINTDLGEX La structure $tagPRINTDLGEX qui contient des informations utilisées pour initialiser la feuille de propriétés. Lorsque la fonction retourne, la structure contient des informations sur les sélections de l'utilisateur. Cette structure doit être initialisée avant l'appel de fonction.
(Voir MSDN pour plus d'informations)

Valeur de retour

Succès: Retourne 1, @extended contient l'une des valeurs suivantes:
$PD_RESULT_APPLY
$PD_RESULT_CANCEL
$PD_RESULT_PRINT
Échec: Retourne 0 et définit @error <> 0, @extended contient le code d'erreur HRESULT.

Remarque

Notez que les valeurs des membres "hDevMode" et "hDevNames" dans $tagPRINTDLG peuvent changer quand elles sont passés à _WinAPI_PrintDlg(). C'est parce que ces membres sont remplis à la fois en entrée et en sortie.

Voir aussi

Consultez PrintDlgEx dans la librairie MSDN.

Exemple

#include <APIDlgConstants.au3>
#include <Memory.au3>
#include <WinAPIDlg.au3>
#include <WinAPIMisc.au3>

Opt('WinTitleMatchMode', 3)

; Creé la structure PrintDlgEx et définit les valeurs initiales du nombre de copies, et pages de début et de fin
Local $tPRINTPAGERANGE = DllStructCreate($tagPRINTPAGERANGE)
DllStructSetData($tPRINTPAGERANGE, 'FromPage', 2)
DllStructSetData($tPRINTPAGERANGE, 'ToPage', 3)
Local $tPRINTDLGEX = DllStructCreate($tagPRINTDLGEX)
DllStructSetData($tPRINTDLGEX, 'Size', DllStructGetSize($tPRINTDLGEX))
DllStructSetData($tPRINTDLGEX, 'hOwner', WinGetHandle(AutoItWinGetTitle()))
DllStructSetData($tPRINTDLGEX, 'Flags', BitOR($PD_PAGENUMS, $PD_NOCURRENTPAGE, $PD_NOSELECTION))
DllStructSetData($tPRINTDLGEX, 'NumPageRanges', 1)
DllStructSetData($tPRINTDLGEX, 'MaxPageRanges', 1)
DllStructSetData($tPRINTDLGEX, 'PageRanges', DllStructGetPtr($tPRINTPAGERANGE))
DllStructSetData($tPRINTDLGEX, 'MinPage', 1)
DllStructSetData($tPRINTDLGEX, 'MaxPage', 9)
DllStructSetData($tPRINTDLGEX, 'Copies', 4)
DllStructSetData($tPRINTDLGEX, 'StartPage', -1)

; Afficher la la feuille de propriété Print
If Not _WinAPI_PrintDlgEx($tPRINTDLGEX) Then
    Exit
EndIf

Switch @extended
    Case $PD_RESULT_PRINT
        ; L'utilisateur a cliqué sur le bouton "Print"
    Case $PD_RESULT_APPLY
        ; L'utilisateur a cliqué sur le bouton "Apply" puis cliqué sur le bouton "Cancel"
    Case $PD_RESULT_CANCEL
        Exit
EndSwitch

; Affiche les résultats
Local $hDevNames = DllStructGetData($tPRINTDLGEX, 'hDevNames')
Local $pDevNames = _MemGlobalLock($hDevNames)
Local $tDEVNAMES = DllStructCreate($tagDEVNAMES, $pDevNames)
ConsoleWrite('Imprimante: '& _WinAPI_GetString($pDevNames + 2 * DllStructGetData($tDEVNAMES, 'DeviceOffset')))
If DllStructGetData($tDEVNAMES, 'Default') Then
    ConsoleWrite('(Par défaut)'& @CRLF)
Else
    ConsoleWrite(@CRLF)
EndIf
Local $aPage[2]
If BitAND(DllStructGetData($tPRINTDLGEX, 'Flags'), $PD_PAGENUMS) Then
    $aPage[0] = DllStructGetData($tPRINTPAGERANGE, 'FromPage')
    $aPage[1] = DllStructGetData($tPRINTPAGERANGE, 'ToPage')
Else
    $aPage[0] = DllStructGetData($tPRINTDLGEX, 'MinPage')
    $aPage[1] = DllStructGetData($tPRINTDLGEX, 'MaxPage')
EndIf
ConsoleWrite('Première page: '& $aPage[0] & @CRLF)
ConsoleWrite('Dernière page: '& $aPage[1] & @CRLF)
ConsoleWrite('Nombre de copies: '& DllStructGetData($tPRINTDLGEX, 'Copies') & @CRLF)

; Libère les objets qui contient une structure DEVMODE et DEVNAMES
_MemGlobalFree(DllStructGetData($tPRINTDLGEX, 'hDevMode'))
_MemGlobalFree($hDevNames)