Structure PRINTDLGEXW (commdlg.h)
Contient les informations que la fonction PrintDlgEx utilise pour initialiser la feuille de propriétés Print. Une fois que l’utilisateur a fermé la feuille de propriétés, le système utilise cette structure pour retourner des informations sur les sélections de l’utilisateur.
Syntaxe
typedef struct tagPDEXW {
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;
LPCWSTR lpPrintTemplateName;
LPUNKNOWN lpCallback;
DWORD nPropertyPages;
HPROPSHEETPAGE *lphPropertyPages;
DWORD nStartPage;
DWORD dwResultAction;
} PRINTDLGEXW, *LPPRINTDLGEXW;
Membres
lStructSize
Type : DWORD
Taille de structure, en octets.
hwndOwner
Type : HWND
Handle de 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’a pas la valeur 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 a la valeur NULL en 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 Remarques à 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 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 Remarques à la fin de cette rubrique.
hDC
Type : HDC
Handle vers 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 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. Ce faisant, 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_RETURNDC = TRUE 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 d’imprimer des copies en double.
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, PD_SELECTION et PD_CURRENTPAGE ne sont pas spécifiés. |
|
Si cet indicateur est défini, la zone Coller case activée est sélectionnée.
Si cet indicateur est défini lorsque la fonction PrintDlgEx est retournée, l’application doit simuler le classement de plusieurs copies. Pour plus d’informations, consultez la description de l’indicateur PD_USEDEVMODECOPIESANDCOLLATE . Voir PD_NOPAGENUMS. |
|
Si cet indicateur est défini, la case d’option Page actuelle est sélectionnée. Si aucun indicateur PD_PAGENUMS, PD_SELECTION ou PD_CURRENTPAGE n’est défini, la case d’option Tous est sélectionnée. |
|
Désactive la zone d’case activée Imprimer dans un fichier. |
|
Indique que les membres hInstance et lpPrintTemplateName spécifient un remplacement pour 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 . Le système utilise le modèle spécifié pour créer une fenêtre enfant de la page Général . |
|
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é. |
|
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 du pilote d’imprimante. |
|
Masque la zone d’case activée Imprimer dans un fichier. |
|
Désactive la case d’option Page active . |
|
Désactive la case d’option Pages et les contrôles d’édition 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 cas d’erreur. |
|
Si cet indicateur est défini, la case d’option Pages est sélectionnée. Si aucun indicateur PD_PAGENUMS, PD_SELECTION ou PD_CURRENTPAGE n’est défini, la case d’option Tous est sélectionnée. Si cet indicateur est défini lorsque la fonction PrintDlgEx est retournée, le membre lpPageRanges indique les plages de pages spécifiées par l’utilisateur. |
|
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 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 obtenir le nom du fichier de sortie. |
|
Force PrintDlgEx à renvoyer 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. |
|
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 sur les handles en 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 retourne une erreur. |
|
Semblable à l’indicateur PD_RETURNDC , sauf que 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 aucun indicateur PD_PAGENUMS, PD_SELECTION ou PD_CURRENTPAGE n’est défini, la case d’option Tous est sélectionnée. |
|
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 PRINTDLGEX 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 de la collection 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 Flags indique si l’utilisateur souhaite le classement. Que cet indicateur soit défini ou non, une application peut déterminer à partir de nCopies et PD_COLLATE le nombre de copies à afficher et les imprimer 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 Coller case activée est désactivée. Les membres dmCopies et dmCollate de la structure DEVMODE contiennent les copies et les informations de collecte 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. 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 . |
|
Force la feuille de propriétés à utiliser un modèle volumineux pour la page Général . Le modèle plus grand offre 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 Print . Cette valeur est utilisée uniquement si l’indicateur PD_EXCLUSIONFLAGS est défini dans le membre Flags . Les indicateurs d’exclusion ne doivent être utilisés que si l’élément à exclure est inclus dans la page Général ou sur une page définie par l’application dans la feuille de propriétés Print . 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 d’une feuille de propriétés Print . 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 Print .
nPageRanges
Type : DWORD
Lors de l’entrée, définissez ce membre sur le nombre initial de plages de pages spécifiées dans le tableau lpPageRanges . Lorsque la fonction PrintDlgEx retourne, 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 tableaux, de la mémoire tampon lpPageRanges . Cette valeur indique le nombre maximal de plages de pages pouvant ê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 retourne, 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 retourne, nCopies contient le nombre réel de copies que l’application doit imprimer. Cette valeur dépend si 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 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. Si l’indicateur PD_ENABLEPRINTTEMPLATEHANDLE est défini dans le membre Flags , hInstance est un handle d’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 afin de déterminer les interfaces prises en charge.
Si vous ne souhaitez pas récupérer les informations de rappel, définissez lpCallback surNULL.
nPropertyPages
Type : DWORD
Nombre de handles de page de propriétés dans le tableau lphPropertyPages .
lphPropertyPages
Type : HPROPSHEETPAGE*
Contient un tableau de descripteurs 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, tous les handles HPROPSHEETPAGE dans le tableau lphPropertyPages ont été détruits. Si nPropertyPages est égal à zéro, lphPropertyPages doit avoir la valeur NULL.
nStartPage
Type : DWORD
Page de propriétés initialement affichée. 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és dans le tableau spécifié dans le membre lphPropertyPages . Par souci de cohérence, il est recommandé de toujours démarrer la feuille de propriétés dans 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 renvoie une erreur, ce membre doit être ignoré. Le membre dwResultAction peut avoir l’une des valeurs suivantes.
PD_RESULT_APPLY
L’utilisateur a cliqué sur le bouton Appliquer , puis sur le bouton Annuler . Cela indique que l’utilisateur souhaite appliquer les modifications apportées à 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ù l’utilisateur a cliqué sur le bouton Appliquer .
PD_RESULT_CANCEL
L’utilisateur a cliqué sur le bouton Annuler . Les informations contenues dans 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 et hDevNames ont la valeur 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 ne l’est pas. Si les noms wDeviceOffset et dmDeviceName ne sont pas les mêmes, 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 ont la valeur 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 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.
Spécifications
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