STRUCTURE PRINTDLGEXA (commdlg.h)

Contient des informations que la fonction PrintDlgEx utilise pour initialiser la feuille de propriétés Print. Une fois que l’utilisateur ferme la feuille de propriétés, le système utilise cette structure pour renvoyer des informations sur les sélections de l’utilisateur.

Syntaxe

typedef struct tagPDEXA {
  DWORD            lStructSize;
  HWND             hwndOwner;
  HGLOBAL          hDevMode;
  HGLOBAL          hDevNames;
  HDC              hDC;
  DWORD            Flags;
  DWORD            Flags2;
  DWORD            ExclusionFlags;
  DWORD            nPageRanges;
  DWORD            nMaxPageRanges;
  LPPRINTPAGERANGE lpPageRanges;
  DWORD            nMinPage;
  DWORD            nMaxPage;
  DWORD            nCopies;
  HINSTANCE        hInstance;
  LPCSTR           lpPrintTemplateName;
  LPUNKNOWN        lpCallback;
  DWORD            nPropertyPages;
  HPROPSHEETPAGE   *lphPropertyPages;
  DWORD            nStartPage;
  DWORD            dwResultAction;
} PRINTDLGEXA, *LPPRINTDLGEXA;

Membres

lStructSize

Type : DWORD

Taille de la structure, en octets.

hwndOwner

Type : HWND

Handle vers la fenêtre qui possède la feuille de propriétés. Ce membre doit être un handle de fenêtre valide ; il ne peut pas être NULL.

hDevMode

Type : HGLOBAL

Handle vers un objet de 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 PrintDlgEx utilise les données d’entrée pour initialiser les contrôles dans la feuille de propriétés. Lorsque PrintDlgEx retourne, les membres DEVMODE indiquent l’entrée de l’utilisateur.

Si hDevMode est NULL sur l’entrée, PrintDlgEx 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.

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’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 PrintDlgEx utilise les données d’entrée pour initialiser les contrôles dans la feuille de propriétés. Lorsque PrintDlgEx 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 PrintDlgEx 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 vers un contexte d’appareil ou un contexte d’information, selon que le membre Indicateurs spécifie le PD_RETURNDC ou l’indicateur 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

Ensemble d’indicateurs de bits que vous pouvez utiliser pour initialiser la feuille de propriétés Print . Lorsque la fonction PrintDlgEx retourne, elle définit ces indicateurs pour indiquer l’entrée de l’utilisateur. Ce membre peut être une ou plusieurs des valeurs suivantes.

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. Dans ce cas, le membre nCopies de la structure PRINTDLG est toujours 1 et PD_COLLATE est toujours FALSE.

Pour vous assurer que PrintDlg ou PrintDlgEx retourne les valeurs correctes dans nCopies et PD_COLLATE, définissez PD_RETURNDCTRUE et PD_USEDEVMODECOPIESANDCOLLATE = = FALSE. Dans ce cas, dmCopies est toujours 1 et dmCollate est toujours FALSE.

À compter de Windows Vista, 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 l’impression des copies en double.

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

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

Consultez PD_NOPAGENUMS.

PD_CURRENTPAGE
0x00400000
Si cet indicateur est défini, la case d’option Page active est sélectionnée. Si aucun des PD_PAGENUMS, PD_SELECTIONou PD_CURRENTPAGE indicateurs n’est défini, la case d’option All est sélectionnée.
PD_DISABLEPRINTTOFILE
0x00080000
Désactive la case à cocher Imprimer dans fichier .
PD_ENABLEPRINTTEMPLATE
0x00004000
Indique que les membres hInstance et lpPrintTemplateName spécifient un remplacement du modèle de boîte de dialogue par défaut dans la partie inférieure de la page Général . Le modèle par défaut contient des contrôles similaires à ceux de la boîte de dialogue Imprimer . Le système utilise le modèle spécifié pour créer une fenêtre enfant de la page Général .
PD_ENABLEPRINTTEMPLATEHANDLE
0x00010000
Indique que le membre hInstance 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 de boîte de dialogue par défaut dans la partie inférieure de la page Général . Le système utilise le modèle spécifié pour créer une fenêtre enfant de la page Général . Le système ignore le membre lpPrintTemplateName si cet indicateur est spécifié.
PD_EXCLUSIONFLAGS
0x01000000
Indique que le membre ExclusionFlags identifie les éléments à exclure des pages de propriétés du pilote d’imprimante. Si cet indicateur n’est pas défini, les éléments sont exclus par défaut des pages de propriétés du pilote d’imprimante. Les exclusions empêchent la duplication d’éléments entre la page Général , toutes les pages spécifiées par l’application et les pages de pilotes d’imprimante.
PD_HIDEPRINTTOFILE
0x00100000
Masque la case à cocher Imprimer dans fichier .
PD_NOCURRENTPAGE
0x00800000
Désactive la case d’option Page active .
PD_NOPAGENUMS
0x00000008
Désactive la case d’option Pages et les contrôles d’édition associés. En outre, la case à cocher 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’une erreur se produit.
PD_PAGENUMS
0x00000002
Si cet indicateur est défini, la case d’option Pages est sélectionnée. Si aucun des PD_PAGENUMS, PD_SELECTIONou PD_CURRENTPAGE indicateurs n’est défini, la case d’option All est sélectionnée. Si cet indicateur est défini lorsque la fonction PrintDlgEx retourne, le membre lpPageRanges indique les plages de pages spécifiées par l’utilisateur.
PD_PRINTTOFILE
0x00000020
Si cet indicateur est défini, la case à cocher Imprimer sur fichier est cochée. Si cet indicateur est défini lorsque PrintDlgEx 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 le nom du fichier de sortie.
PD_RETURNDC
0x00000100
Force PrintDlgEx à retourner un contexte d’appareil correspondant aux sélections effectuées par l’utilisateur dans la feuille de propriétés. Le contexte de l’appareil est retourné dans hDC.
PD_RETURNDEFAULT
0x00000400
Si cet indicateur est défini, la fonction PrintDlgEx n’affiche pas la feuille de propriétés. Au lieu de cela, il définit les membres hDevNames et hDevMode à gérer sur les structures DEVNAMES et DEVMODE qui sont initialisées pour l’imprimante système par défaut. HDevNames et hDevMode doivent avoir la valeur NULL, ou PrintDlgEx renvoie une erreur.
PD_RETURNIC
0x00000200
Semblable à l’indicateur PD_RETURNDC , sauf que cet indicateur retourne 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.
PD_SELECTION
0x00000001
Si cet indicateur est défini, la case d’option Sélection est sélectionnée. Si aucun des indicateurs PD_PAGENUMS, PD_SELECTION ou PD_CURRENTPAGE n’est défini, la case d’option All est sélectionnée.
PD_USEDEVMODECOPIES
0x00040000
Identique à PD_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 membre nCopies de la structure PRINTDLGEX retourne toujours 1 et PD_COLLATE n’est jamais défini dans le membre Flags .

Si cet indicateur n’est pas défini, l’application est responsable de l’impression et de la collecte de plusieurs copies. Dans ce cas, le membre nCopies de la structure PRINTDLGEX indique le nombre de copies que l’utilisateur souhaite imprimer, et l’indicateur PD_COLLATE dans le membre Indicateurs indique si l’utilisateur souhaite le classement.

Que cet indicateur soit défini, une application peut déterminer à partir de nCopies et PD_COLLATE le nombre 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, 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 case à cocher Collate est désactivée.

Les membres dmCopies et dmCollate de la structure DEVMODE contiennent les copies et collez 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, 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 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.

Dans les versions de Windows antérieures à Windows Vista, si cet indicateur n’est pas défini par l’application appelante et que le membre dmCopies de la structure DEVMODE est supérieur à 1, utilisez cette valeur pour le nombre de copies ; sinon, utilisez la valeur du membre nCopies de la structure PRINTDLGEX .

PD_USELARGETEMPLATE
0x10000000
Force la feuille de propriétés à utiliser un grand modèle pour la page Général . Le modèle plus grand fournit plus d’espace pour les applications qui spécifient un modèle personnalisé pour la partie inférieure de la page Général .

Flags2

Type : DWORD

ExclusionFlags

Type : DWORD

Ensemble d’indicateurs de bits qui peuvent exclure des éléments des pages de propriétés du pilote d’imprimante dans la feuille de propriétés Imprimer . Cette valeur est utilisée uniquement si l’indicateur PD_EXCLUSIONFLAGS est défini dans le membre Indicateurs . Les indicateurs d’exclusion ne doivent être utilisés que si l’élément à exclure sera inclus dans la page Général ou dans une page définie par l’application dans la feuille de propriétés Imprimer . Ce membre peut spécifier l’indicateur suivant.

PD_EXCL_COPIESANDCOLLATE

Exclut les contrôles Copies et Collate des pages de propriétés du pilote d’imprimante dans une feuille de propriétés Imprimer . Cet indicateur doit toujours être défini lorsque l’application utilise les contrôles Copies et Collate par défaut fournis par la partie inférieure de la page Général de la feuille de propriétés Imprimer .

nPageRanges

Type : DWORD

Lors de l’entrée, définissez ce membre sur le nombre initial de plages de pages spécifié dans le tableau lpPageRanges . Lorsque la fonction PrintDlgEx est retournée, nPageRanges indique le nombre de plages de pages spécifiées par l’utilisateur stockées dans le tableau lpPageRanges . Si l’indicateur PD_NOPAGENUMS est spécifié, cette valeur n’est pas valide.

nMaxPageRanges

Type : DWORD

Taille, dans les éléments de tableau, de la mémoire tampon lpPageRanges . Cette valeur indique le nombre maximal de plages de pages qui peuvent être stockées dans le tableau. Si l’indicateur PD_NOPAGENUMS est spécifié, cette valeur n’est pas valide. Si l’indicateur PD_NOPAGENUMS n’est pas spécifié, cette valeur doit être supérieure à zéro.

lpPageRanges

Type : LPPRINTPAGERANGE

Pointeur vers une mémoire tampon contenant un tableau de structures PRINTPAGERANGE . Lors de l’entrée, le tableau contient les plages de pages initiales à afficher dans le contrôle d’édition Pages . Lorsque la fonction PrintDlgEx est retournée, le tableau contient les plages de pages spécifiées par l’utilisateur. Si l’indicateur PD_NOPAGENUMS est spécifié, cette valeur n’est pas valide. Si l’indicateur PD_NOPAGENUMS n’est pas spécifié, lpPageRanges doit être non NULL.

nMinPage

Type : DWORD

Valeur minimale pour les plages de pages spécifiées dans le contrôle d’édition Pages . Si l’indicateur PD_NOPAGENUMS est spécifié, cette valeur n’est pas valide.

nMaxPage

Type : DWORD

Valeur maximale pour les plages de pages spécifiées dans le contrôle d’édition Pages . Si l’indicateur PD_NOPAGENUMS est spécifié, cette valeur n’est pas valide.

nCopies

Type : DWORD

Contient le 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 PrintDlgEx est retourné, nCopies contient le nombre réel de copies que l’application doit 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 à 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 PD_USEDEVMODECOPIESANDCOLLATE .

hInstance

Type : HINSTANCE

Si l’indicateur PD_ENABLEPRINTTEMPLATE est défini dans le membre Flags , hInstance est un handle de l’instance d’application ou de module qui contient le modèle de boîte de dialogue nommé par le membre lpPrintTemplateName . Si l’indicateur PD_ENABLEPRINTTEMPLATEHANDLE est défini dans le membre Flags , hInstance est un handle pour un objet mémoire contenant un modèle de boîte de dialogue. Si aucun des indicateurs de modèle n’est défini dans le membre Flags , hInstance doit avoir la valeur NULL.

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 par défaut dans la partie inférieure de la page Général . Le modèle par défaut contient des contrôles similaires à ceux de la boîte de dialogue Imprimer . Ce membre est ignoré, sauf si l’indicateur PD_ENABLEPRINTTEMPLATE est défini dans le membre Indicateurs .

lpCallback

Type : LPUNKNOWN

Pointeur vers un objet de rappel défini par l’application.

L’objet doit contenir la classe IPrintDialogCallback pour recevoir des messages pour la boîte de dialogue enfant dans la partie inférieure de la page Général .

L’objet de rappel doit également contenir la classe IObjectWithSite pour recevoir un pointeur vers l’interface IPrintDialogServices . La fonction PrintDlgEx appelle IUnknown::QueryInterface sur l’objet de rappel pour IID_IPrintDialogCallback et IID_IObjectWithSite pour déterminer les interfaces prises en charge.

Si vous ne souhaitez pas récupérer d’informations de rappel, définissez lpCallback sur NULL.

nPropertyPages

Type : DWORD

Nombre de handles de page de propriétés dans le tableau lphPropertyPages .

lphPropertyPages

Type : HPROPSHEETPAGE*

Contient un tableau de poignées de page de propriétés à ajouter à la feuille de propriétés Print . Les pages de propriétés supplémentaires suivent la page Général . Utilisez la fonction CreatePropertySheetPage pour créer ces pages supplémentaires. Lorsque la fonction PrintDlgEx retourne, toutes les poignées HPROPSHEETPAGE dans le tableau lphPropertyPages ont été détruites. Si nPropertyPages est zéro, lphPropertyPages doit être NULL.

nStartPage

Type : DWORD

Page de propriétés qui s’affiche initialement. Pour afficher la page Général , spécifiez START_PAGE_GENERAL. Sinon, spécifiez l’index de base zéro d’une page de propriété dans le tableau spécifié dans le membre lphPropertyPages . Pour une cohérence, il est recommandé que la feuille de propriétés soit toujours démarrée sur la page Général .

dwResultAction

Type : DWORD

Lors de l’entrée, définissez ce membre sur zéro. Si la fonction PrintDlgEx retourne S_OK, dwResultAction contient le résultat de la boîte de dialogue. Si PrintDlgEx retourne une erreur, ce membre doit être ignoré. Le membre dwResultAction peut être l’une des valeurs suivantes.

PD_RESULT_APPLY

L’utilisateur a cliqué sur le bouton Appliquer et a cliqué ultérieurement sur le bouton Annuler . Cela indique que l’utilisateur souhaite appliquer les modifications apportées dans la feuille de propriétés, mais ne souhaite pas encore imprimer. La structure PRINTDLGEX contient les informations spécifiées par l’utilisateur au moment où le bouton Appliquer a été cliqué.

PD_RESULT_CANCEL

L’utilisateur a cliqué sur le bouton Annuler . Les informations de la structure PRINTDLGEX sont inchangées.

PD_RESULT_PRINT

L’utilisateur a cliqué sur le bouton Imprimer . La structure PRINTDLGEX contient les informations spécifiées par l’utilisateur.

Notes

Si hDevMode ethDevNames sont NULL, PrintDlgEx initialise la feuille de propriétés à l’aide de l’imprimante par défaut actuelle. Pour initialiser la feuille de propriétés 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 n’est pas. Si les noms wDeviceOffset et dmDeviceName ne sont pas identiques, PrintDlgEx initialise la feuille de propriétés à l’aide de l’imprimante spécifiée par wDeviceOffset.

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

Pendant l’exécution de PrintDlgEx, les structures DEVMODE et DEVNAMES que vous avez spécifiées dans la structure PRINTDLGEX peuvent ne pas toujours contenir de données actuelles. Pour cette raison, les pages de propriétés spécifiques à l’application ainsi que les routines IPrintDialogCallback pour la page initiale doivent utiliser l’interface IPrintDialogServices pour récupérer des informations sur l’état de l’imprimante actuelle.

Notes

L’en-tête commdlg.h définit PRINTDLGEX 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. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre 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 (include Windows.h)

Voir aussi

Bibliothèque de boîtes de dialogue courante

Conceptuel

DEVMODE

DEVNAMES

IPrintDialogCallback

IPrintDialogServices

PrintDlgEx

Référence