Structure PRINTDLGA (commdlg.h)
Contient des informations que la fonction PrintDlg utilise pour initialiser la boîte de dialogue Imprimer. Une fois que l’utilisateur a fermé 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 tagPDA {
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;
LPCSTR lpPrintTemplateName;
LPCSTR lpSetupTemplateName;
HGLOBAL hPrintTemplate;
HGLOBAL hSetupTemplate;
} PRINTDLGA, *LPPRINTDLGA;
Membres
lStructSize
Type : DWORD
Taille de la structure, en octets.
hwndOwner
Type : HWND
Handle de la fenêtre qui possè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 pas de propriétaire.
hDevMode
Type : HGLOBAL
Handle vers un objet de mémoire globale mobile qui contient une structure DEVMODE . Si hDevMode n’est pas NULL lors de l’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 a la valeur NULL lors de l’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 pour l’imprimante spécifiée ne prend pas en charge les modes de périphérique étendus, hDevMode a la valeur NULL lorsque PrintDlg retourne.
Si le nom de l’appareil (spécifié par le membre dmDeviceName de la structure DEVMODE ) n’apparaît pas dans la section [devices] de WIN.INI, PrintDlg renvoie une erreur.
Pour plus d’informations sur les membres hDevMode et hDevNames , consultez la section Notes à la fin de cette rubrique.
hDevNames
Type : HGLOBAL
Handle vers un objet de mémoire globale mobile qui contient une structure DEVNAMES . Si hDevNames n’a pas la valeur 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’informations.
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 membres hDevMode et hDevNames , consultez la section Notes à la fin de cette rubrique.
hDC
Type : HDC
Handle pour un contexte d’appareil ou un contexte d’information, selon que le membre Flags spécifie l’indicateur PD_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, PD_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 |
---|---|
|
Indicateur par défaut qui indique que la case d’option Tous est initialement sélectionnée. Cet indicateur est utilisé comme espace réservé pour indiquer que les indicateurs PD_PAGENUMS et PD_SELECTION ne sont pas spécifiés. |
|
Si cet indicateur est défini, la zone Case activée est sélectionné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 PD_USEDEVMODECOPIESANDCOLLATE . Voir PD_NOPAGENUMS. |
|
Désactive la zone d’case activée Imprimer dans un fichier. |
|
Active la procédure de raccordement spécifiée dans le membre lpfnPrintHook . Cela active la procédure de raccordement pour la boîte de dialogue Imprimer . |
|
Indique que les membres hInstance et lpPrintTemplateName spécifient un remplacement pour le modèle de boîte de dialogue Imprimer par défaut. |
|
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é. |
|
Active la procédure de raccordement spécifiée dans le membre lpfnSetupHook . Cela active la procédure de raccordement pour la boîte de dialogue Configuration de l’impression . |
|
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. |
|
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 de l’impression. Le système ignore le membre lpSetupTemplateName si cet indicateur est spécifié. |
|
Masque la zone d’case activée Imprimer dans un fichier. |
|
Masque et désactive le bouton Réseau . |
|
Désactive la case d’option Pages et les contrôles de modification associés. En outre, la boîte de dialogue Coller case activée s’affiche. |
|
Désactive la case d’option Sélection . |
|
Empêche l’affichage du message d’avertissement en l’absence d’imprimante par défaut. |
|
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 membres nFromPage et nToPage indiquent les pages de début et de fin spécifiées par l’utilisateur. |
|
Le système affiche la boîte de dialogue Configuration de l’impression plutôt que la boîte de dialogue Imprimer . |
|
Si cet indicateur est défini, la zone Imprimer dans le fichier case activée est sélectionnée. Si cet indicateur est défini lorsque la fonction PrintDlg retourne, le décalage indiqué par le membre wOutputOffset 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 obtenir le nom du fichier de sortie. |
|
Force PrintDlg à renvoyer 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. |
|
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 sur les handles sur les structures DEVMODE et DEVNAMES qui sont initialisées pour l’imprimante système par défaut. HDevNames et hDevMode doivent être NULL, ou PrintDlg retourne une erreur. |
|
Semblable à l’indicateur PD_RETURNDC , cet indicateur renvoie un contexte d’information plutôt qu’un contexte d’appareil. Si ni PD_RETURNDC ni PD_RETURNIC n’est spécifié, hDC n’est pas défini sur la sortie. |
|
Si cet indicateur est défini, la case d’option Sélection est sélectionnée. Si ni PD_PAGENUMS ni PD_SELECTION n’est défini, la case d’option Tout est sélectionnée. |
|
La boîte de dialogue affiche le 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 . |
|
Identique à PD_USEDEVMODECOPIESANDCOLLATE. |
|
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 classement. Dans ce cas, le membre nCopies de la structure PRINTDLG retourne toujours 1 et PD_COLLATE n’estjamais défini dans le membre Flags.
Si cet indicateur n’est pas défini, l’application est responsable de l’impression et du classement de plusieurs copies. Dans ce cas, le membre nCopies de la structure PRINTDLG indique le nombre de copies que l’utilisateur souhaite imprimer, et l’indicateur PD_COLLATE dans le membre Flags indique si l’utilisateur souhaite un classement. Que cet indicateur soit défini ou non, une application peut déterminer à partir de nCopies et PD_COLLATE combien de copies afficher et si elles doivent être imprimées ou non. Si cet indicateur est défini et que le pilote d’imprimante ne prend pas en charge plusieurs copies, le contrôle d’édition Copies est désactivé. De même, si cet indicateur est défini et que le pilote d’imprimante ne prend pas en charge le classement, la zone Case activée est désactivée. Les membres dmCopies et dmCollate de la structure DEVMODE contiennent les copies et les informations de regroupement utilisées par le pilote d’imprimante. Si cet indicateur est défini et que le pilote d’imprimante prend en charge plusieurs copies, le membre dmCopies 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 un 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 permuter les valeurs nCopies et dmCopies lorsqu’il est retourné. La solution de contournement de ce problème consiste à 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 membres dmCopies et dmCollate de la structure DEVMODE , définissez PD_RETURNDC = TRUE et PD_USEDEVMODECOPIESANDCOLLATE = TRUE. Ce faisant, le membre nCopies de la structure PRINTDLG est toujours 1 et PD_COLLATE a toujours la valeur FALSE.
Pour vous assurer que PrintDlg ou PrintDlgEx renvoie les valeurs correctes dans nCopies et PD_COLLATE, définissez PD_RETURNDC = TRUE et PD_USEDEVMODECOPIESANDCOLLATE = FALSE. Ce faisant, dmCopies est toujours 1 et dmCollate a toujours la valeur FALSE.
Sur Windows Vista et Windows 7, lorsque vous appelez PrintDlg ou PrintDlgEx avec PD_RETURNDC défini sur TRUE et PD_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 d’imprimer des 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épart 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 PD_PAGENUMS et ne retourne pas tant que l’utilisateur n’a pas entré 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 PD_PAGENUMS est spécifié ; sinon, elle affiche la boîte de dialogue, mais remplace la valeur hors limites 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 PD_PAGENUMS et ne retourne pas tant que l’utilisateur n’a pas entré une valeur de page de fin comprise dans la plage de pages minimale à maximale.
nMinPage
Type : WORD
Valeur minimale pour la plage de pages spécifiée dans les contrôles de modification de page De et De . Si nMinPage est égal à nMaxPage, la case d’option Pages et les contrôles de modification de page de début et de fin sont désactivés.
nMaxPage
Type : WORD
Valeur maximale pour la plage de pages spécifiée dans les contrôles de modification de page De et De .
nCopies
Type : WORD
Nombre initial de copies pour le contrôle d’édition Copies si hDevMode a la valeur NULL ; sinon, le membre dmCopies de la structure DEVMODE contient la valeur initiale. Lorsque PrintDlg est retourné, 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 PD_USEDEVMODECOPIESANDCOLLATE est défini dans le membre Indicateurs , nCopies est toujours 1 au 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 responsable de l’impression du nombre de copies spécifiées par nCopies. Pour plus d’informations, consultez la description de l’indicateur PD_USEDEVMODECOPIESANDCOLLATE .
hInstance
Type : HINSTANCE
Si l’indicateur PD_ENABLEPRINTTEMPLATE ou PD_ENABLESETUPTEMPLATE est défini dans le membre Flags, hInstance est un handle de l’application ou du module instance qui contient le modèle de boîte de dialogue nommé par le membre lpPrintTemplateName ou 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 . 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 du 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 PD_ENABLEPRINTHOOK est défini dans le membre Indicateurs .
lpfnSetupHook
Type : LPSETUPHOOKPROC
Pointeur vers une procédure de hook SetupHookProc qui peut traiter les messages destinés à la boîte de dialogue Configuration de l’impression. Ce membre est ignoré, sauf si l’indicateur PD_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 PD_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 PD_ENABLESETUPTEMPLATE est défini dans le membre Indicateurs .
hPrintTemplate
Type : HGLOBAL
Si l’indicateur PD_ENABLEPRINTTEMPLATEHANDLE est défini dans le membre Flags , hPrintTemplate est un handle pour 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 PD_ENABLESETUPTEMPLATEHANDLE est défini dans le membre Flags , hSetupTemplate est un handle pour 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 ont la valeur 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 membre wDeviceOffset de la structure DEVNAMES pour spécifier le nom de l’imprimante.
Notez que le membre dmDeviceName de la structure DEVMODE spécifie également un nom d’imprimante. Toutefois, dmDeviceName est limité à 32 caractères, et le nom wDeviceOffset ne l’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 PD_RETURNDEFAULT est défini et que hDevMode et hDevNames ont tous deux la valeur NULL, PrintDlg utilise les membres hDevNames et hDevMode pour renvoyer des informations sur l’imprimante par défaut actuelle sans afficher la boîte de dialogue.
Notes
L’en-tête commdlg.h définit PRINTDLG comme un 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.
Configuration requise
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
En-tête | commdlg.h (inclure Windows.h) |
Voir aussi
Bibliothèque de boîtes de dialogue commune
Conceptuel
Référence