Share via


La classe CPrintDialog

Encapsule les services fournis par la boîte de dialogue courante d'impression Windows.

Syntaxe

class CPrintDialog : public CCommonDialog

Membres

Constructeurs publics

Nom Description
CPrintDialog::CPrintDialog Construit un objet CPrintDialog.

Méthodes publiques

Nom Description
CPrintDialog::CreatePrinterDC Crée un contexte d’appareil d’imprimante sans afficher la boîte de dialogue Imprimer.
CPrintDialog::DoModal Affiche la boîte de dialogue et permet à l’utilisateur d’effectuer une sélection.
CPrintDialog::GetCopies Récupère le nombre de copies demandées.
CPrintDialog::GetDefaults Récupère les valeurs par défaut de l’appareil sans afficher une boîte de dialogue.
CPrintDialog::GetDeviceName Récupère le nom de l’appareil d’imprimante actuellement sélectionné.
CPrintDialog::GetDevMode Récupère la DEVMODE structure.
CPrintDialog::GetDriverName Récupère le nom du pilote d’imprimante actuellement sélectionné.
CPrintDialog::GetFromPage Récupère la page de démarrage de la plage d’impression.
CPrintDialog::GetPortName Récupère le nom du port d’imprimante actuellement sélectionné.
CPrintDialog::GetPrinterDC Récupère un handle dans le contexte de l’appareil d’imprimante.
CPrintDialog::GetToPage Récupère la page de fin de la plage d’impression.
CPrintDialog::PrintAll Détermine s’il faut imprimer toutes les pages du document.
CPrintDialog::PrintCollate Détermine si les copies compilées sont demandées.
CPrintDialog::PrintRange Détermine s’il faut imprimer uniquement une plage de pages spécifiée.
CPrintDialog::PrintSelection Détermine s’il faut imprimer uniquement les éléments actuellement sélectionnés.

Membres de données publics

Nom Description
CPrintDialog::m_pd Structure utilisée pour personnaliser un CPrintDialog objet.

Notes

Les boîtes de dialogue d’impression courantes offrent un moyen simple d’implémenter des boîtes de dialogue Configuration d’impression et d’impression de manière cohérente avec les normes Windows.

Remarque

La CPrintDialogEx classe encapsule les services fournis par la feuille de propriétés d’impression Windows. Pour plus d’informations, consultez la vue d’ensemble CPrintDialogEx .

CPrintDialogla fonctionnalité est remplacée par celle de , qui est conçue pour vous fournir une boîte de CPageSetupDialogdialogue commune pour la configuration d’impression et la mise en page.

Vous pouvez vous appuyer sur l’infrastructure pour gérer de nombreux aspects du processus d’impression pour votre application. Dans ce cas, l’infrastructure affiche automatiquement la boîte de dialogue courante Windows pour l’impression. Vous pouvez également avoir le handle d’infrastructure d’impression pour votre application, mais remplacer la boîte de dialogue Imprimer commune avec votre propre boîte de dialogue d’impression. Pour plus d’informations sur l’utilisation de l’infrastructure pour gérer les tâches d’impression, consultez l’article Impression.

Si vous souhaitez que votre application gère l’impression sans l’implication du framework, vous pouvez utiliser la CPrintDialog classe « tel quel » avec le constructeur fourni, ou vous pouvez dériver votre propre classe de dialogue à partir d’un constructeur et écrire un constructeur en fonction de CPrintDialog vos besoins. Dans les deux cas, ces boîtes de dialogue se comportent comme des boîtes de dialogue MFC standard, car elles sont dérivées de la classe CCommonDialog.

Pour utiliser un CPrintDialog objet, commencez par créer l’objet à l’aide du CPrintDialog constructeur. Une fois la boîte de dialogue construite, vous pouvez définir ou modifier toutes les valeurs de la m_pd structure pour initialiser les valeurs des contrôles de la boîte de dialogue. La m_pd structure est de type PRINTDLG. Pour plus d’informations sur cette structure, consultez le Kit de développement logiciel (SDK) Windows.

Si vous ne fournissez pas vos propres handles m_pd pour les membres et hDevNames les hDevMode membres, veillez à appeler la fonction GlobalFree Windows pour ces handles lorsque vous avez terminé avec la boîte de dialogue. Lorsque vous utilisez l’implémentation du programme d’installation d’impression de l’infrastructure fournie par CWinApp::OnFilePrintSetup, vous n’avez pas besoin de libérer ces handles. Les poignées sont conservées CWinApp et libérées dans CWinApple destructeur de 's. Il est nécessaire de libérer ces poignées uniquement lors de l’utilisation CPrintDialog autonome.

Après avoir initialisé les contrôles de boîte de dialogue, appelez la DoModal fonction membre pour afficher la boîte de dialogue et autoriser l’utilisateur à sélectionner les options d’impression. DoModal retourne si l’utilisateur a sélectionné le bouton OK (IDOK) ou Annuler (IDCANCEL).

Si DoModal elle est retournée IDOK, vous pouvez utiliser l’une des CPrintDialogfonctions membres pour récupérer l’entrée d’informations par l’utilisateur.

La CPrintDialog::GetDefaults fonction membre est utile pour récupérer les valeurs par défaut de l’imprimante actuelle sans afficher de boîte de dialogue. Cette fonction membre ne nécessite aucune interaction utilisateur.

Vous pouvez utiliser la fonction Windows CommDlgExtendedError pour déterminer si une erreur s’est produite lors de l’initialisation de la boîte de dialogue et pour en savoir plus sur l’erreur. Pour plus d’informations sur cette fonction, consultez le Kit de développement logiciel (SDK) Windows.

CPrintDialog s’appuie sur le COMMDLG.DLL fichier fourni avec les versions 3.1 et ultérieures de Windows.

Pour personnaliser la boîte de dialogue, dérivez une classe de CPrintDialog, fournissez un modèle de dialogue personnalisé et ajoutez un mappage de messages pour traiter les messages de notification à partir des contrôles étendus. Tous les messages non traités doivent être transmis à la classe de base. La personnalisation de la fonction de hook n’est pas nécessaire.

Pour traiter le même message différemment selon que la boîte de dialogue est Print ou Print Setup, vous devez dériver une classe pour chaque boîte de dialogue. Vous devez également remplacer la fonction Windows AttachOnSetup , qui gère la création d’une boîte de dialogue lorsque le bouton Configuration d’impression est sélectionné dans une boîte de dialogue Imprimer.

Pour plus d’informations sur l’utilisation CPrintDialog, consultez Classes de dialogue courantes.

Hiérarchie d'héritage

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CPrintDialog

Spécifications

En-têteafxdlgs.h:

CPrintDialog::CPrintDialog

Construit un objet de boîte de dialogue d’impression ou d’installation d’impression Windows.

CPrintDialog(
    BOOL bPrintSetupOnly,
    DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE | PD_NOSELECTION,
    CWnd* pParentWnd = NULL);

Paramètres

bPrintSetupOnly
Spécifie si la boîte de dialogue Imprimer Windows standard ou la boîte de dialogue Configuration de l’impression est affichée. Définissez ce paramètre pour TRUE afficher la boîte de dialogue Configuration d’impression Windows standard. Définissez-le pour FALSE afficher la boîte de dialogue Imprimer Windows. Si bPrintSetupOnly c’est FALSEle cas, un bouton d’option Configuration d’impression s’affiche toujours dans la boîte de dialogue Imprimer.

dwFlags
Un ou plusieurs indicateurs que vous pouvez utiliser pour personnaliser les paramètres de la boîte de dialogue, combinés à l’aide de l’opérateur OR au niveau du bit. Par exemple, l’indicateur PD_ALLPAGES définit la plage d’impression par défaut sur toutes les pages du document. Pour plus d’informations sur ces indicateurs, consultez la PRINTDLG structure du Kit de développement logiciel (SDK) Windows.

pParentWnd
Pointeur vers la fenêtre parent ou propriétaire de la boîte de dialogue.

Notes

Cette fonction membre construit uniquement l’objet. Utilisez la DoModal fonction membre pour afficher la boîte de dialogue.

Notez que lorsque vous appelez le constructeur avec bPrintSetupOnly la valeur définie FALSE, l’indicateur PD_RETURNDC est automatiquement utilisé. Après avoir appelé DoModal, GetDefaultsou GetPrinterDC, un contrôleur de domaine d’imprimante est retourné dans m_pd.hDC. Ce contrôleur de domaine doit être libéré avec un appel à DeleteDC l’appelant de CPrintDialog.

Exemple

// Display the Windows Print dialog box with "All" radio button 
// initially selected. All other radio buttons are disabled.
CPrintDialog dlg1(FALSE);

// Display the Windows Print dialog box with Collate check box checked.  
CPrintDialog dlg2(FALSE, PD_ALLPAGES | PD_COLLATE | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE);

// Display the Windows Print dialog box with "Selection" radio
// button initially selected. "All" radio button is enabled
// but "Pages" radio button is disabled.
CPrintDialog dlg3(FALSE, PD_SELECTION | PD_USEDEVMODECOPIES);

CPrintDialog::CreatePrinterDC

Crée un contexte d’appareil d’imprimante (DC) à partir des structures et DEVNAMES des DEVMODE structures.

HDC CreatePrinterDC();

Valeur de retour

Gérez le contexte d’appareil d’imprimante nouvellement créé.

Notes

Ce contrôleur de domaine est supposé être le contrôleur de domaine d’imprimante actuel, et tous les autres contrôleurs de domaine d’imprimante précédemment obtenus doivent être supprimés par l’utilisateur. Cette fonction peut être appelée et le contrôleur de domaine obtenu utilisé, sans jamais afficher la boîte de dialogue Imprimer.

Exemple

// Display the Windows Print dialog box with "All" radio button 
// initially selected. All other radio buttons are disabled.
CPrintDialog dlg(FALSE);
if (dlg.DoModal() == IDOK)
{
   // Create a printer device context (DC) based on the information
   // selected from the Print dialog.
   HDC hdc = dlg.CreatePrinterDC();
   ASSERT(hdc);
}

CPrintDialog::DoModal

Affiche la boîte de dialogue d’impression courante windows et permet à l’utilisateur de sélectionner différentes options d’impression, telles que le nombre de copies, la plage de pages et si les copies doivent être compilées.

virtual INT_PTR DoModal();

Valeur de retour

IDOK ou IDCANCEL. Si IDCANCEL elle est retournée, appelez la fonction Windows CommDlgExtendedError pour déterminer si une erreur s’est produite.

IDOK et IDCANCEL sont des constantes qui indiquent si l’utilisateur a sélectionné le bouton OK ou Annuler .

Notes

Si vous souhaitez initialiser les différentes options de boîte de dialogue d’impression en définissant les membres de la m_pd structure, vous devez le faire avant d’appeler DoModal, mais après la construction de l’objet de dialogue.

Après l’appel DoModal, vous pouvez appeler d’autres fonctions membres pour récupérer les paramètres ou l’entrée d’informations par l’utilisateur dans la boîte de dialogue.

Notez que lorsque vous appelez le constructeur avec bPrintSetupOnly la valeur définie FALSE, l’indicateur PD_RETURNDC est automatiquement utilisé. Après avoir appelé DoModal, GetDefaultsou GetPrinterDC, un contrôleur de domaine d’imprimante est retourné dans m_pd.hDC. Ce contrôleur de domaine doit être libéré avec un appel à DeleteDC l’appelant de CPrintDialog.

Exemple

Consultez l’exemple pour CPrintDialog::CreatePrinterDC.

CPrintDialog::GetCopies

Récupère le nombre de copies demandées.

int GetCopies() const;

Valeur de retour

Nombre de copies demandées.

Notes

Appelez cette fonction après avoir appelé DoModal pour récupérer le nombre de copies demandées.

Exemple

Consultez l’exemple pour CPrintDialog::PrintCollate.

CPrintDialog::GetDefaults

Récupère les valeurs par défaut de l’appareil de l’imprimante par défaut sans afficher de boîte de dialogue.

BOOL GetDefaults();

Valeur de retour

Différent de zéro si la fonction a réussi ; sinon 0.

Notes

Les valeurs récupérées sont placées dans la m_pd structure.

Dans certains cas, un appel à cette fonction appelle le constructeur pour CPrintDialog lequel la bPrintSetupOnly valeur est définie FALSE. Dans ce cas, un contrôleur de domaine d’imprimante et hDevNameshDevMode (deux handles situés dans le m_pd membre de données) sont automatiquement alloués.

Si le constructeur pour CPrintDialog lequel a été appelé avec bPrintSetupOnly la valeur définie FALSE, cette fonction ne retourne hDevNames pas seulement et hDevMode se trouve dans m_pd.hDevNames et m_pd.hDevMode) à l’appelant, mais retourne également un contrôleur de domaine d’imprimante dans m_pd.hDC. Il incombe à l’appelant de supprimer le contrôleur de domaine d’imprimante et d’appeler la fonction Windows GlobalFree sur les handles lorsque vous avez terminé avec l’objet CPrintDialog .

Exemple

Ce fragment de code obtient le contexte d’appareil de l’imprimante par défaut et signale à l’utilisateur la résolution de l’imprimante en points par pouce. (Cet attribut des fonctionnalités de l’imprimante est souvent appelé PPP.)

CPrintDialog dlg(FALSE);

if (!dlg.GetDefaults())
{
   AfxMessageBox(_T("You have no default printer!"));
}
else
{
   // attach to the DC we were given
   CDC dc;
   dc.Attach(dlg.m_pd.hDC);

   // ask for the measurements
   int nHorz = dc.GetDeviceCaps(LOGPIXELSX);
   int nVert = dc.GetDeviceCaps(LOGPIXELSY);

   // almost always the same in both directions, but sometimes not!
   CString str;
   if (nHorz == nVert)
   {
      str.Format(_T("Your printer supports %d pixels per inch"), nHorz);
   }
   else
   {
      str.Format(_T("Your printer supports %d pixels per inch ")
         _T("horizontal resolution, and %d pixels per inch vertical ")
         _T("resolution"), nHorz, nVert);
   }

   // tell the user
   AfxMessageBox(str);

   // Note: no need to call Detach() because we want the CDC destructor
   // to call FreeDC() on the DC we borrowed from the common dialog
}

CPrintDialog::GetDeviceName

Récupère le nom de l’appareil d’imprimante actuellement sélectionné.

CString GetDeviceName() const;

Valeur de retour

Nom de l’imprimante actuellement sélectionnée.

Notes

Appelez cette fonction après avoir appelé DoModal pour récupérer le nom de l’imprimante actuellement sélectionnée, ou après avoir appelé GetDefaults pour récupérer les valeurs par défaut de l’appareil actuel de l’imprimante par défaut. Utilisez un pointeur vers l’objet CString retourné par GetDeviceName la valeur d’un lpszDeviceName appel à CDC::CreateDC.

Exemple

Ce fragment de code montre le nom d’imprimante par défaut de l’utilisateur et le port à lequel il est connecté, ainsi que le nom du spouleur utilisé par l’imprimante. Le code peut afficher une boîte de message indiquant : « Votre imprimante par défaut est HP LaserJet IIIP sur \\server\share à l’aide de winspool. » par exemple.

CPrintDialog dlg(FALSE);

if (!dlg.GetDefaults())
{
   AfxMessageBox(_T("You have no default printer!"));
}
else
{
   CString strDescription;

   strDescription.Format(_T("Your default printer is %s on %s using %s."),
      (LPCTSTR)dlg.GetDeviceName(),
      (LPCTSTR)dlg.GetPortName(),
      (LPCTSTR)dlg.GetDriverName());

   AfxMessageBox(strDescription);
}

CPrintDialog::GetDevMode

Récupère la DEVMODE structure.

LPDEVMODE GetDevMode() const;

Valeur de retour

Structure DEVMODE de données, qui contient des informations sur l’initialisation de l’appareil et l’environnement d’un pilote d’impression. Vous devez déverrouiller la mémoire prise par cette structure avec la fonction Windows GlobalUnlock , qui est décrite dans le Kit de développement logiciel (SDK) Windows.

Notes

Appelez cette fonction après avoir appelé DoModal ou GetDefaults récupéré des informations sur l’appareil d’impression.

Exemple

Consultez l’exemple pour CPrintDialog::PrintCollate.

CPrintDialog::GetDriverName

Récupère le nom du pilote d’imprimante actuellement sélectionné.

CString GetDriverName() const;

Valeur de retour

Spécification CString du nom du pilote défini par le système.

Notes

Appelez cette fonction après l’appel DoModal ou GetDefaults pour récupérer le nom du pilote de périphérique d’imprimante défini par le système. Utilisez un pointeur vers l’objet CString retourné par GetDriverName la valeur d’un lpszDriverName appel à CDC::CreateDC.

Exemple

Consultez l’exemple pour CPrintDialog::GetDeviceName.

CPrintDialog::GetFromPage

Récupère la page de démarrage de la plage d’impression.

int GetFromPage() const;

Valeur de retour

Numéro de page de départ dans la plage de pages à imprimer.

Notes

Appelez cette fonction après avoir appelé DoModal pour récupérer le numéro de page de départ dans la plage de pages à imprimer.

Exemple

Consultez l’exemple pour CPrintDialog::m_pd.

CPrintDialog::GetPortName

Récupère le nom du port d’imprimante actuellement sélectionné.

CString GetPortName() const;

Valeur de retour

Nom du port d’imprimante actuellement sélectionné.

Notes

Appelez cette fonction après l’appel DoModal ou GetDefaults pour récupérer le nom du port d’imprimante actuellement sélectionné.

Exemple

Consultez l’exemple de CPrintDialog ::GetDeviceName.

CPrintDialog::GetPrinterDC

Récupère un handle dans le contexte de l’appareil d’imprimante.

HDC GetPrinterDC() const;

Valeur de retour

Handle vers le contexte de l’appareil d’imprimante en cas de réussite ; sinon NULL.

Notes

Si le bPrintSetupOnly paramètre du constructeur était FALSE (indiquant que la boîte de dialogue Imprimer est affichée), GetPrinterDC retourne un handle au contexte de l’appareil CPrintDialog d’imprimante. Vous devez appeler la fonction Windows DeleteDC pour supprimer le contexte de l’appareil lorsque vous avez terminé de l’utiliser.

Exemple

CPrintDialog dlg(FALSE);
CPrintDialog dlg(FALSE);
if (dlg.DoModal() == IDOK)
{
   // Get a handle to the printer device context (DC).
   HDC hdc = dlg.GetPrinterDC();
   ASSERT(hdc);

   // Do something with the HDC...

   // Clean up.
   CDC::FromHandle(hdc)->DeleteDC();
}

CPrintDialog::GetToPage

Récupère la page de fin de la plage d’impression.

int GetToPage() const;

Valeur de retour

Numéro de page de fin de la plage de pages à imprimer.

Notes

Appelez cette fonction après avoir appelé DoModal pour récupérer le numéro de page de fin dans la plage de pages à imprimer.

Exemple

Consultez l’exemple pour CPrintDialog::m_pd.

CPrintDialog::m_pd

Structure dont les membres stockent les caractéristiques de l’objet de dialogue.

PRINTDLG& m_pd;

Notes

Après avoir construit un CPrintDialog objet, vous pouvez utiliser m_pd pour définir différents aspects de la boîte de dialogue avant d’appeler la DoModal fonction membre. Pour plus d’informations sur la m_pd structure, consultez PRINTDLG le Kit de développement logiciel (SDK) Windows.

Si vous modifiez directement le m_pd membre de données, vous remplacerez tout comportement par défaut.

Exemple

// Display the Windows Print dialog box with "Pages" radio button
// initially selected. "All" and "Pages" radio buttons are
// enabled as well.
CPrintDialog dlg(FALSE, PD_PAGENUMS | PD_USEDEVMODECOPIES);
dlg.m_pd.nMinPage = dlg.m_pd.nFromPage = 1;
dlg.m_pd.nMaxPage = dlg.m_pd.nToPage = 10;
if (dlg.DoModal() == IDOK)
{
   // Determine the starting and ending page numbers for the range 
   // of pages to be printed.

   int from_page = -1, to_page = -1;
   if (dlg.PrintAll())              // print all pages in the document
   {
      from_page = dlg.m_pd.nMinPage;
      to_page = dlg.m_pd.nMaxPage;
   }
   else if (dlg.PrintRange())       // print only a range of pages 
   {                                // in the document 
      from_page = dlg.GetFromPage();
      to_page = dlg.GetToPage();
   }
   else if (dlg.PrintSelection())   // print only the currently selected 
                                    // items
   {
      from_page = to_page = -1;     // -1 to denote unknown yet
   }

   TRACE(_T("Print from %d to %d\n"), from_page, to_page);
}

CPrintDialog::PrintAll

Détermine s’il faut imprimer toutes les pages du document.

BOOL PrintAll() const;

Valeur de retour

Différent de zéro si toutes les pages du document doivent être imprimées ; sinon 0.

Notes

Appelez cette fonction après avoir appelé DoModal pour déterminer s’il faut imprimer toutes les pages du document.

Exemple

Consultez l’exemple pour CPrintDialog::m_pd.

CPrintDialog::PrintCollate

Détermine si les copies compilées sont demandées.

BOOL PrintCollate() const;

Valeur de retour

Différent de zéro si l’utilisateur sélectionne la zone de case activée collate dans la boîte de dialogue ; sinon, 0.

Notes

Appelez cette fonction après avoir appelé DoModal pour déterminer si l’imprimante doit rassembler toutes les copies imprimées du document.

Exemple

// Display the Windows Print dialog box with Collate check box checked.
CPrintDialog dlg(FALSE, PD_ALLPAGES | PD_COLLATE | PD_NOPAGENUMS |
   PD_HIDEPRINTTOFILE);
if (dlg.DoModal() == IDOK)
{
   // If the collate check box is selected, then GetCopies() will return
   // the number of copies printed. Otherwise, GetCopies() always 
   // returns 1. Then, the number of copies printed can be found from the
   // DEVMODE structure of the printing device.
   if (dlg.PrintCollate())
   {
      int num = dlg.GetCopies();
      TRACE(_T("Number of copies printed = %d\n"), num);
   }
   else
   {
      LPDEVMODE devmode = dlg.GetDevMode();
      TRACE(_T("Number of copies printed = %d\n"), devmode->dmCopies);
   }
}

CPrintDialog::PrintRange

Détermine s’il faut imprimer uniquement une plage de pages spécifiée.

BOOL PrintRange() const;

Valeur de retour

Différent de zéro si seule une plage de pages du document doit être imprimée ; sinon 0.

Notes

Appelez cette fonction après avoir appelé DoModal pour déterminer s’il faut imprimer uniquement une plage de pages dans le document.

Exemple

Consultez l’exemple pour CPrintDialog::m_pd.

CPrintDialog::PrintSelection

Détermine s’il faut imprimer uniquement les éléments actuellement sélectionnés.

BOOL PrintSelection() const;

Valeur de retour

Différent de zéro si seuls les éléments sélectionnés doivent être imprimés ; sinon 0.

Notes

Appelez cette fonction après avoir appelé DoModal pour déterminer s’il faut imprimer uniquement les éléments actuellement sélectionnés.

Exemple

Consultez l’exemple pour CPrintDialog::m_pd.

Voir aussi

Exemple MFC DIBLOOK
CCommonDialog Classe
Graphique hiérarchique
CPrintInfo Structure