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
.
CPrintDialog
la fonctionnalité est remplacée par celle de , qui est conçue pour vous fournir une boîte de CPageSetupDialog
dialogue 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 CWinApp
le 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 CPrintDialog
fonctions 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
CPrintDialog
Spécifications
En-tête : afxdlgs.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 FALSE
le 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
, GetDefaults
ou 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
, GetDefaults
ou 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 hDevNames
hDevMode
(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 case à cocher 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