Partager via


PRINTDLGW, structure (commdlg.h)

Contient des informations que la fonction PrintDlg utilise pour initialiser la boîte de dialogue Imprimer. Une fois que l’utilisateur ferme la boîte de dialogue, le système utilise cette structure pour retourner des informations sur les sélections de l’utilisateur.

Syntaxe

typedef struct tagPDW {
  DWORD           lStructSize;
  HWND            hwndOwner;
  HGLOBAL         hDevMode;
  HGLOBAL         hDevNames;
  HDC             hDC;
  DWORD           Flags;
  WORD            nFromPage;
  WORD            nToPage;
  WORD            nMinPage;
  WORD            nMaxPage;
  WORD            nCopies;
  HINSTANCE       hInstance;
  LPARAM          lCustData;
  LPPRINTHOOKPROC lpfnPrintHook;
  LPSETUPHOOKPROC lpfnSetupHook;
  LPCWSTR         lpPrintTemplateName;
  LPCWSTR         lpSetupTemplateName;
  HGLOBAL         hPrintTemplate;
  HGLOBAL         hSetupTemplate;
} PRINTDLGW, *LPPRINTDLGW;

Membres

lStructSize

Type : DWORD

Taille de la structure, en octets.

hwndOwner

Type : HWND

Handle de la fenêtre propriétaire de la boîte de dialogue. Ce membre peut être n’importe quel handle de fenêtre valide, ou il peut être null si la boîte de dialogue n’a aucun propriétaire.

hDevMode

Type : HGLOBAL

Handle vers un objet mémoire globale mobile qui contient une structure DEVMODE. Si hDevMode n’est pas NULL en entrée, vous devez allouer un bloc de mémoire mobile pour la structure DEVMODE et initialiser ses membres. La fonction PrintDlg utilise les données d’entrée pour initialiser les contrôles dans la boîte de dialogue. Lorsque printDlg retourne, les membres DEVMODE indiquent l’entrée de l’utilisateur.

Si hDevMode est NULL en entrée, PrintDlg alloue de la mémoire pour la structure DEVMODE, initialise ses membres pour indiquer l’entrée de l’utilisateur et retourne un handle qui l’identifie.

Si le pilote de périphérique de l’imprimante spécifiée ne prend pas en charge les modes d’appareil étendus, hDevMode est NULL quand PrintDlg retourne.

Si le nom de l’appareil (spécifié par l'dmDeviceName membre de la structure DEVMODE) n’apparaît pas dans la section [devices] de WIN. INI, PrintDlg retourne une erreur.

Pour plus d’informations sur les hDevMode et les membres hDevNames, consultez la section Remarques à la fin de cette rubrique.

hDevNames

Type : HGLOBAL

Handle vers un objet mémoire globale mobile qui contient une structure DEVNAMES. Si hDevNames n’est pas NULL en entrée, vous devez allouer un bloc de mémoire mobile pour la structure DEVNAMES et initialiser ses membres. La fonction PrintDlg utilise les données d’entrée pour initialiser les contrôles dans la boîte de dialogue. Lorsque printDlg retourne, les membres DEVNAMES contiennent des informations pour l’imprimante choisie par l’utilisateur. Vous pouvez utiliser ces informations pour créer un contexte d’appareil ou un contexte d’information.

Le membre hDevNames peut être NULL, auquel cas PrintDlg alloue de la mémoire pour la structure DEVNAMES, initialise ses membres pour indiquer l’entrée de l’utilisateur et retourne un handle qui l’identifie.

Pour plus d’informations sur les hDevMode et les membres hDevNames, consultez la section Remarques à la fin de cette rubrique.

hDC

Type : HDC

Handle vers un contexte d’appareil ou un contexte d’informations, selon que les indicateurs membre spécifient l’indicateur _RETURNDC ou PC_RETURNIC. Si aucun indicateur n’est spécifié, la valeur de ce membre n’est pas définie. Si les deux indicateurs sont spécifiés, _RETURNDC a la priorité.

Flags

Type : DWORD

Initialise la boîte de dialogue Imprimer. Lorsque la boîte de dialogue est retournée, elle définit ces indicateurs pour indiquer l’entrée de l’utilisateur. Ce membre peut être une ou plusieurs des valeurs suivantes.

Valeur Signification
PD_ALLPAGES
0x00000000
Indicateur par défaut qui indique que la case d’option Tout est initialement sélectionnée. Cet indicateur est utilisé comme espace réservé pour indiquer que les indicateurs _PAGENUMS et _SELECTION ne sont pas spécifiés.
PD_COLLATE
0x00000010
Si cet indicateur est défini, la case Collate est cochée.

Si cet indicateur est défini lorsque la fonction PrintDlg retourne, l’application doit simuler le classement de plusieurs copies. Pour plus d’informations, consultez la description de l’indicateur de _USEDEVMODECOPIESANDCOLLATE.

Voir _NOPAGENUMS.

PD_DISABLEPRINTTOFILE
0x00080000
Désactive la case à cocher Imprimer dans le fichier.
PD_ENABLEPRINTHOOK
0x00001000
Active la procédure de hook spécifiée dans le membre lpfnPrintHook. Cela active la procédure de raccordement pour la boîte de dialogue Imprimer.
PD_ENABLEPRINTTEMPLATE
0x00004000
Indique que les membres hInstance et lpPrintTemplateName spécifient un remplacement pour le modèle de boîte de dialogue Imprimer par défaut.
PD_ENABLEPRINTTEMPLATEHANDLE
0x00010000
Indique que le membre hPrintTemplate identifie un bloc de données qui contient un modèle de boîte de dialogue préchargé. Ce modèle remplace le modèle par défaut de la boîte de dialogue Imprimer. Le système ignore le membre lpPrintTemplateName si cet indicateur est spécifié.
PD_ENABLESETUPHOOK
0x00002000
Active la procédure de hook spécifiée dans le membre lpfnSetupHook. Cela active la procédure de raccordement pour la boîte de dialogue Configuration d’impression.
PD_ENABLESETUPTEMPLATE
0x00008000
Indique que les membres hInstance et lpSetupTemplateName spécifient un remplacement pour le modèle de boîte de dialogue configuration d’impression par défaut.
PD_ENABLESETUPTEMPLATEHANDLE
0x00020000
Indique que le membre hSetupTemplate identifie un bloc de données qui contient un modèle de boîte de dialogue préchargé. Ce modèle remplace le modèle par défaut de la boîte de dialogue Configuration d’impression. Le système ignore le membre lpSetupTemplateName si cet indicateur est spécifié.
PD_HIDEPRINTTOFILE
0x00100000
Masque la case à cocher Imprimer dans le fichier.
PD_NONETWORKBUTTON
0x00200000
Masque et désactive le bouton Réseau.
PD_NOPAGENUMS
0x00000008
Désactive la case d’option Pages et les contrôles d’édition associés. En outre, la case Collate s’affiche dans la boîte de dialogue.
PD_NOSELECTION
0x00000004
Désactive la case d’option Sélection.
PD_NOWARNING
0x00000080
Empêche l’affichage du message d’avertissement lorsqu’il n’existe aucune imprimante par défaut.
PD_PAGENUMS
0x00000002
Si cet indicateur est défini, la case d’option Pages est sélectionnée. Si cet indicateur est défini lorsque la fonction PrintDlg retourne, les nFromPage et les membres nToPage indiquent les pages de début et de fin spécifiées par l’utilisateur.
PD_PRINTSETUP
0x00000040
Provoque l’affichage du système dans la boîte de dialogue Configuration d’impression plutôt que dans la boîte de dialogue Imprimer.
PD_PRINTTOFILE
0x00000020
Si cet indicateur est défini, la case à cocher Imprimer dans fichier est cochée. Si cet indicateur est défini lorsque la fonction PrintDlg retourne, le décalage indiqué par le wOutputOffset membre de la structure DEVNAMES contient la chaîne « FILE : ». Lorsque vous appelez la fonction StartDoc pour démarrer l’opération d’impression, spécifiez cette chaîne « FILE : » dans le membre lpszOutput de la structure DOCINFO . Si vous spécifiez cette chaîne, le sous-système d’impression interroge l’utilisateur pour le nom du fichier de sortie.
PD_RETURNDC
0x00000100
Provoque printDlg retourner un contexte d’appareil correspondant aux sélections effectuées par l’utilisateur dans la boîte de dialogue. Le contexte de l’appareil est retourné dans hDC .
PD_RETURNDEFAULT
0x00000400
Si cet indicateur est défini, la fonction PrintDlg n’affiche pas la boîte de dialogue. Au lieu de cela, il définit les membres hDevNames et hDevMode à gérer sur DEVMODE et structures DEVNAMES initialisées pour l’imprimante système par défaut. Les hDevNames et hDevMode doivent être NULL, ou PrintDlg renvoie une erreur.
PD_RETURNIC
0x00000200
Similaire à l’indicateur _RETURNDC, sauf que cet indicateur retourne un contexte d’information plutôt qu’un contexte d’appareil. Si aucun _RETURNDC ni _RETURNIC n’est spécifié, hDC n’est pas défini sur la sortie.
PD_SELECTION
0x00000001
Si cet indicateur est défini, la case d’option Sélection est sélectionnée. Si aucun _PAGENUMS ni _SELECTION n’est défini, la case d’option Tout est sélectionnée.
PD_SHOWHELP
0x00000800
Provoque l’affichage de la boîte de dialogue bouton Aide. Le membre hwndOwner doit spécifier la fenêtre pour recevoir les messages inscrits HELPMSGSTRING que la boîte de dialogue envoie lorsque l’utilisateur clique sur le bouton Aide.
PD_USEDEVMODECOPIES
0x00040000
Identique à _USEDEVMODECOPIESANDCOLLATE.
PD_USEDEVMODECOPIESANDCOLLATE
0x00040000
Cet indicateur indique si votre application prend en charge plusieurs copies et classements. Définissez cet indicateur sur l’entrée pour indiquer que votre application ne prend pas en charge plusieurs copies et classements. Dans ce cas, le nCopies membre de la structure PRINTDLG retourne toujours 1 et _COLLATE n’est jamais défini dans le membre Flags.

Si cet indicateur n’est pas défini, l’application est chargée d’imprimer et de rassembler plusieurs copies. Dans ce cas, le nCopies membre de la structure PRINTDLG indique le nombre de copies que l’utilisateur souhaite imprimer, et l’indicateur _COLLATE dans les indicateurs de membre indique si l’utilisateur souhaite le classement.

Indépendamment de la définition de cet indicateur, une application peut déterminer à partir de nCopies et _COLLATE combien de copies afficher et s’il faut les imprimer.

Si cet indicateur est défini et que le pilote d’imprimante ne prend pas en charge plusieurs copies, la Copies contrôle d’édition est désactivée. De même, si cet indicateur est défini et que le pilote d’imprimante ne prend pas en charge le classement, la case Collate est désactivée.

Les dmCopies et membres dmCollate de la structure DEVMODE contiennent les copies et collent les informations utilisées par le pilote d’imprimante. Si cet indicateur est défini et que le pilote d’imprimante prend en charge plusieurs copies, la dmCopies membre indique le nombre de copies demandées par l’utilisateur. Si cet indicateur est défini et que le pilote d’imprimante prend en charge le classement, le membre dmCollate de la structure DEVMODE indique si l’utilisateur souhaite le classement. Si cet indicateur n’est pas défini, le membre dmCopies retourne toujours 1 et le membre dmCollate est toujours égal à zéro.

problème connu sur Windows 2000/XP/2003 : Si cet indicateur n’est pas défini avant d’appeler printDlg, PrintDlg peut échanger nCopies et valeurs dmCopies lors de son retour. La solution de contournement pour ce problème est d’utiliser dmCopies si sa valeur est supérieure à 1, sinon, utilisez nCopies, pour obtenir le nombre réel de copies à imprimer lorsque PrintDlg retourne.

 

Pour vous assurer que printDlg ou PrintDlgEx retourne les valeurs correctes dans les dmCopies et membres dmCollate de la structure DEVMODE , définissez _RETURNDCTRUE et _USEDEVMODECOPIESANDCOLLATETRUE. Ainsi, la nCopies membre de la structure PRINTDLG est toujours 1 et _COLLATE est toujours FALSE.

Pour vous assurer que printDlg ou PrintDlgEx retourne les valeurs correctes dans nCopies et _COLLATE, définissez _RETURNDC = TRUE et _USEDEVMODECOPIESANDCOLLATE = FALSE. Ainsi, dmCopies est toujours 1 et dmCollate est toujours FALSE.

Sur Windows Vista et Windows 7, lorsque vous appelez PrintDlg ou PrintDlgEx avec _RETURNDC défini sur TRUE et _USEDEVMODECOPIESANDCOLLATE défini sur false , la fonction PrintDlg ou PrintDlgEx définit le nombre de copies dans le membre nCopies de la structure PRINTDLG , et définit le nombre de copies dans la structure représentée par le membre hDC de la structure PRINTDLG.

Lorsque vous effectuez des appels à GDI, vous devez ignorer la valeur de nCopies, considérer la valeur comme 1 et utiliser le HDC retourné pour éviter l’impression de copies en double.

nFromPage

Type : WORD

Valeur initiale du contrôle de modification de page de démarrage.

Lorsque printDlg retourne, nFromPage est la page de démarrage spécifiée par l’utilisateur. Si la case d’option Pages est sélectionnée lorsque l’utilisateur clique sur le bouton ok, PrintDlg définit l’indicateur de _PAGENUMS et ne retourne pas tant que l’utilisateur n’entre pas dans une valeur de page de départ comprise dans la plage de pages minimale à maximale.

Si la valeur d’entrée pour nFromPage ou nToPage est en dehors de la plage minimale/maximale, PrintDlg retourne une erreur uniquement si l’indicateur _PAGENUMS est spécifié ; sinon, elle affiche la boîte de dialogue, mais remplace la valeur hors plage par la valeur minimale ou maximale.

nToPage

Type : WORD

Valeur initiale du contrôle de modification de page de fin. Lorsque printDlg retourne, nToPage est la page de fin spécifiée par l’utilisateur. Si la case d’option Pages est sélectionnée lorsque l’utilisation clique sur le bouton ok, PrintDlg définit l’indicateur de _PAGENUMS et ne retourne pas tant que l’utilisateur n’entre pas dans une valeur de page de fin comprise dans la plage de pages minimale à maximale.

nMinPage

Type : WORD

Valeur minimale de la plage de pages spécifiée dans le De et À contrôles de modification de page. Si nMinPage est égal à nMaxPage, la case d’option Pages et les contrôles de modification de page de démarrage et de fin sont désactivés.

nMaxPage

Type : WORD

Valeur maximale de la plage de pages spécifiée dans le De et À contrôles de modification de page.

nCopies

Type : WORD

Nombre initial de copies pour le contrôle d’édition Copies si hDevMode est NULL ; sinon, le dmCopies membre de la structure DEVMODE contient la valeur initiale. Lorsque printDlg retourne, nCopies contient le nombre réel de copies à imprimer. Cette valeur varie selon que l’application ou le pilote d’imprimante est responsable de l’impression de plusieurs copies. Si l’indicateur de _USEDEVMODECOPIESANDCOLLATE est défini dans le membre indicateurs de , nCopies est toujours 1 à retour et le pilote d’imprimante est responsable de l’impression de plusieurs copies. Si l’indicateur n’est pas défini, l’application est chargée d’imprimer le nombre de copies spécifiées par nCopies. Pour plus d’informations, consultez la description de l’indicateur de _USEDEVMODECOPIESANDCOLLATE.

hInstance

Type : HINSTANCE

Si l’indicateur _ENABLEPRINTTEMPLATE ou _ENABLESETUPTEMPLATE est défini dans le membre Flags , hInstance est un handle pour l’instance d’application ou de module qui contient le modèle de boîte de dialogue nommé par le lpPrintTemplateName ou membre lpSetupTemplateName.

lCustData

Type : LPARAM

Données définies par l’application que le système transmet à la procédure de raccordement identifiée par le membre lpfnPrintHook ou lpfnSetupHook membre. Lorsque le système envoie le message WM_INITDIALOG à la procédure de raccordement, le paramètre lParam du message est un pointeur vers la structure PRINTDLG spécifiée lors de la création de la boîte de dialogue. La procédure de raccordement peut utiliser ce pointeur pour obtenir la valeur lCustData.

lpfnPrintHook

Type : LPPRINTHOOKPROC

Pointeur vers une procédure de hook PrintHookProc qui peut traiter les messages destinés à la boîte de dialogue Imprimer. Ce membre est ignoré, sauf si l’indicateur _ENABLEPRINTHOOK est défini dans le membre Indicateurs.

lpfnSetupHook

Type : LPSETUPHOOKPROC

Pointeur vers une procédure SetupHookProc qui peut traiter les messages destinés à la boîte de dialogue Configuration d’impression. Ce membre est ignoré, sauf si l’indicateur _ENABLESETUPHOOK est défini dans le membre Indicateurs.

lpPrintTemplateName

Type : LPCTSTR

Nom de la ressource de modèle de boîte de dialogue dans le module identifié par le membre hInstance. Ce modèle remplace le modèle de boîte de dialogue Imprimer par défaut. Ce membre est ignoré, sauf si l’indicateur _ENABLEPRINTTEMPLATE est défini dans le membre Indicateurs.

lpSetupTemplateName

Type : LPCTSTR

Nom de la ressource de modèle de boîte de dialogue dans le module identifié par le membre hInstance. Ce modèle remplace le modèle de boîte de dialogue configuration d’impression par défaut. Ce membre est ignoré, sauf si l’indicateur _ENABLESETUPTEMPLATE est défini dans le membre Indicateurs.

hPrintTemplate

Type : HGLOBAL

Si l’indicateur _ENABLEPRINTTEMPLATEHANDLE est défini dans le membre indicateurs de , hPrintTemplate est un handle sur un objet mémoire contenant un modèle de boîte de dialogue. Ce modèle remplace le modèle de boîte de dialogue Imprimer par défaut.

hSetupTemplate

Type : HGLOBAL

Si l’indicateur _ENABLESETUPTEMPLATEHANDLE est défini dans le membre Indicateurs de , hSetupTemplate est un handle sur un objet mémoire contenant un modèle de boîte de dialogue. Ce modèle remplace le modèle de boîte de dialogue configuration d’impression par défaut.

Remarques

Si hDevMode et hDevNames sont NULL, PrintDlg initialise la boîte de dialogue à l’aide de l’imprimante par défaut actuelle. Pour initialiser la boîte de dialogue d’une autre imprimante, utilisez le wDeviceOffset membre de la structure DEVNAMES pour spécifier le nom de l’imprimante.

Notez que le dmDeviceName membre de la structure DEVMODE spécifie également un nom d’imprimante. Toutefois, dmDeviceName est limité à 32 caractères et le nom wDeviceOffset n’est pas. Si les noms wDeviceOffset et dmDeviceName ne sont pas identiques, PrintDlg initialise la boîte de dialogue à l’aide de l’imprimante spécifiée par wDeviceOffset.

Si l’indicateur de _RETURNDEFAULT est défini et que hDevMode et sont NULL, PrintDlg utilise les hDevNames et les membres hDevMode pour retourner des informations sur l’imprimante par défaut actuelle sans afficher la boîte de dialogue.

Note

L’en-tête commdlg.h définit PRINTDLG comme alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
d’en-tête commdlg.h (include Windows.h)

Voir aussi

bibliothèque de boîtes de dialogue courante

conceptuelle

DEVMODE

DEVNAMES

PrintDlg

de référence

WM_INITDIALOG