CPageSetupDialog, classe
Encapsule les services fournis par la boîte de dialogue Mise en page OLE courante Windows avec une prise en charge supplémentaire pour définir et modifier les marges d'impression.
Syntaxe
class CPageSetupDialog : public CCommonDialog
Membres
Constructeurs publics
Nom | Description |
---|---|
CPageSetupDialog ::CPageSetupDialog | Construit un objet CPageSetupDialog . |
Méthodes publiques
Nom | Description |
---|---|
CPageSetupDialog ::CreatePrinterDC | Crée un contexte d’appareil pour l’impression. |
CPageSetupDialog ::D oModal | Affiche la boîte de dialogue et autorise l’utilisateur à effectuer une sélection. |
CPageSetupDialog ::GetDeviceName | Retourne le nom de l’appareil de l’imprimante. |
CPageSetupDialog ::GetDevMode | Retourne le DEVMODE actuel de l’imprimante. |
CPageSetupDialog ::GetDriverName | Retourne le pilote utilisé par l’imprimante. |
CPageSetupDialog ::GetMargins | Retourne les paramètres de marge actuels de l’imprimante. |
CPageSetupDialog ::GetPaperSize | Retourne la taille du papier de l’imprimante. |
CPageSetupDialog ::GetPortName | Retourne le nom du port de sortie. |
CPageSetupDialog ::OnDrawPage | Appelé par l’infrastructure pour afficher une image d’écran d’une page imprimée. |
CPageSetupDialog ::P reDrawPage | Appelé par l’infrastructure avant de restituer une image d’écran d’une page imprimée. |
Membres de données publics
Nom | Description |
---|---|
CPageSetupDialog ::m_psd | Structure utilisée pour personnaliser un CPageSetupDialog objet. |
Notes
Cette classe est conçue pour prendre la place de la boîte de dialogue Configuration d’impression.
Pour utiliser un CPageSetupDialog
objet, commencez par créer l’objet à l’aide du CPageSetupDialog
constructeur. Une fois la boîte de dialogue construite, vous pouvez définir ou modifier toutes les valeurs du m_psd
membre de données pour initialiser les valeurs des contrôles de la boîte de dialogue. La structure m_psd est de type PAGESETUPDLG.
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
retourne IDOK, vous pouvez utiliser plusieurs fonctions membres ou CPageSetupDialog
accéder au m_psd
membre de données pour récupérer des informations d’entrée par l’utilisateur.
Remarque
Une fois la boîte de dialogue mise en page OLE commune ignorée, toutes les modifications apportées par l’utilisateur ne seront pas enregistrées par l’infrastructure. Il incombe à l’application elle-même d’enregistrer les valeurs de cette boîte de dialogue dans un emplacement permanent, tel que le membre du document ou de la classe d’application de l’application.
Hiérarchie d'héritage
CPageSetupDialog
Spécifications
En-tête : afxdlgs.h
CPageSetupDialog ::CPageSetupDialog
Appelez cette fonction pour construire un CPageSetupDialog
objet.
CPageSetupDialog(
DWORD dwFlags = PSD_MARGINS | PSD_INWININIINTLMEASURE,
CWnd* pParentWnd = NULL);
Paramètres
dwFlags
Un ou plusieurs indicateurs que vous pouvez utiliser pour personnaliser les paramètres de la boîte de dialogue. Les valeurs peuvent être combinées à l’aide de l’opérateur OR au niveau du bit. Ces valeurs ont les significations suivantes :
PSD_DEFAULTMINMARGINS Définit les largeurs minimales autorisées pour que les marges de page soient identiques aux valeurs minimales de l’imprimante. Cet indicateur est ignoré si les indicateurs PSD_MARGINS et PSD_MINMARGINS sont également spécifiés.
PSD_INWININIINTLMEASURE Non implémenté.
PSD_MINMARGINS Permet au système d’utiliser les valeurs spécifiées dans le
rtMinMargin
membre comme largeurs minimales autorisées pour les marges gauche, supérieure, droite et inférieure. Le système empêche l’utilisateur d’entrer une largeur inférieure à la valeur minimale spécifiée. Si PSD_MINMARGINS n’est pas spécifié, le système définit les largeurs minimales autorisées sur celles autorisées par l’imprimante.PSD_MARGINS Active la zone de contrôle de marge.
PSD_INTHOUSANDTHSOFINCHES Provoque la mesure des unités de la boîte de dialogue en 1/1000 d’un pouce.
PSD_INHUNDREDTHSOFMILLIMETERS Provoque la mesure des unités de la boîte de dialogue en 1/100 d’un millimètre.
PSD_DISABLEMARGINS Désactive les contrôles de la boîte de dialogue de marge.
PSD_DISABLEPRINTER désactive le bouton Imprimante.
PSD_NOWARNING Empêche l’affichage du message d’avertissement lorsqu’il n’existe aucune imprimante par défaut.
PSD_DISABLEORIENTATION Désactive le contrôle de boîte de dialogue d’orientation de page.
PSD_RETURNDEFAULT Causes
CPageSetupDialog
de retour des structures DEVMODE et DEVNAMES initialisées pour l’imprimante système par défaut sans afficher de boîte de dialogue. Il est supposé que les deuxhDevNames
ethDevMode
sont NULL ; sinon, la fonction retourne une erreur. Si l’imprimante par défaut du système est prise en charge par un ancien pilote d’imprimante (antérieure à Windows version 3.0), elle est retournée uniquementhDevNames
;hDevMode
elle a la valeur NULL.PSD_DISABLEPAPER Désactive le contrôle de sélection de papier.
PSD_SHOWHELP La boîte de dialogue affiche le bouton Aide. Le
hwndOwner
membre ne doit pas être NULL si cet indicateur est spécifié.PSD_ENABLEPAGESETUPHOOK Active la fonction de hook spécifiée dans
lpfnSetupHook
.PSD_ENABLEPAGESETUPTEMPLATE Permet au système d’exploitation de créer la boîte de dialogue à l’aide de la boîte de dialogue identifiée par
hInstance
etlpSetupTemplateName
.PSD_ENABLEPAGESETUPTEMPLATEHANDLE Indique qu’un
hInstance
bloc de données qui contient un modèle de boîte de dialogue préchargé. Le système ignorelpSetupTemplateName
si cet indicateur est spécifié.PSD_ENABLEPAGEPAINTHOOK Active la fonction de hook spécifiée dans
lpfnPagePaintHook
.PSD_DISABLEPAGEPAINTING Désactive la zone de dessin de la boîte de dialogue.
pParentWnd
Pointeur vers le parent ou le propriétaire de la boîte de dialogue.
Notes
Utilisez la fonction DoModal pour afficher la boîte de dialogue.
Exemple
void CMyRichEditView::OnPageSetupDlg()
{
CPageSetupDialog psd(PSD_INTHOUSANDTHSOFINCHES | PSD_MARGINS |
PSD_ENABLEPAGEPAINTHOOK, this);
// Initialize margins
psd.m_psd.rtMargin.top = 1000;
psd.m_psd.rtMargin.left = 1250;
psd.m_psd.rtMargin.right = 1250;
psd.m_psd.rtMargin.bottom = 1000;
psd.m_psd.lpfnPagePaintHook = (LPPAGEPAINTHOOK)PaintHook;
if (IDOK == psd.DoModal())
{
// Propagate changes to the app
AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);
}
else
{
TRACE(_T("CommDlgExtendedError returned error %d from ")
_T("CPageSetupDialog::DoModal().\n"),
(int)CommDlgExtendedError());
}
}
CPageSetupDialog ::CreatePrinterDC
Crée un contexte d’appareil d’imprimante à partir des structures DEVMODE et DEVNAMES .
HDC CreatePrinterDC();
Valeur de retour
Gérez le contexte d’appareil d’imprimante nouvellement créé (DC).
CPageSetupDialog ::D oModal
Appelez cette fonction pour afficher la boîte de dialogue Mise en page OLE commune de Windows et permettre à l’utilisateur de sélectionner différentes options d’installation d’impression, telles que les marges d’impression, la taille et l’orientation du papier et de l’imprimante de destination.
virtual INT_PTR DoModal();
Valeur de retour
IDOK ou IDCANCEL. Si IDCANCEL est retourné, 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
En outre, l’utilisateur peut accéder aux options de configuration de l’imprimante, telles que l’emplacement réseau et les propriétés spécifiques à l’imprimante sélectionnée.
Si vous souhaitez initialiser les différentes options de boîte de dialogue Mise en page en définissant les membres de la m_psd
structure, vous devez le faire avant d’appeler DoModal
, et une fois l’objet de boîte de dialogue construit. Après l’appel DoModal
, appelez d’autres fonctions membres pour récupérer les paramètres ou les informations entrées par l’utilisateur dans la boîte de dialogue.
Si vous souhaitez propager les paramètres actuels entrés par l’utilisateur, appelez CWinApp ::SelectPrinter. Cette fonction prend les informations de l’objet CPageSetupDialog
et initialise et sélectionne un nouveau contrôleur de domaine d’imprimante avec les attributs appropriés.
AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);
Exemple
Consultez l’exemple de CPageSetupDialog ::CPageSetupDialog.
CPageSetupDialog ::GetDeviceName
Appelez cette fonction après DoModal
avoir récupéré le nom de l’imprimante actuellement sélectionnée.
CString GetDeviceName() const;
Valeur de retour
Nom de l’appareil utilisé par l’objet CPageSetupDialog
.
CPageSetupDialog ::GetDevMode
Appelez cette fonction après avoir appelé DoModal
pour récupérer des informations sur le contexte de l’appareil d’imprimante de l’objet CPageSetupDialog
.
LPDEVMODE GetDevMode() const;
Valeur de retour
Structure de données DEVMODE , 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.
CPageSetupDialog ::GetDriverName
Appelez cette fonction après avoir appelé DoModal pour récupérer le nom du pilote de périphérique d’imprimante défini par le système.
CString GetDriverName() const;
Valeur de retour
Spécification CString
du nom du pilote défini par le système.
Notes
Utilisez un pointeur vers l’objet CString
retourné par GetDriverName
la valeur d’un lpszDriverName
appel à CDC ::CreateDC.
CPageSetupDialog ::GetMargins
Appelez cette fonction après un appel pour DoModal
récupérer les marges du pilote de périphérique d’imprimante.
void GetMargins(
LPRECT lpRectMargins,
LPRECT lpRectMinMargins) const;
Paramètres
lpRectMargins
Pointeur vers une structure RECT ou un objet CRect qui décrit (en 1/1000 pouces ou 1/100 mm) les marges d’impression de l’imprimante actuellement sélectionnée. Passez NULL pour ce paramètre, si vous n’êtes pas intéressé par ce rectangle.
lpRectMinMargins
Pointeur vers une structure ou CRect
un RECT
objet qui décrit (en 1/1000 pouces ou 1/100 mm) les marges d’impression minimales de l’imprimante actuellement sélectionnée. Passez NULL pour ce paramètre, si vous n’êtes pas intéressé par ce rectangle.
CPageSetupDialog ::GetPaperSize
Appelez cette fonction pour récupérer la taille du papier sélectionné pour l’impression.
CSize GetPaperSize() const;
Valeur de retour
Objet CSize contenant la taille du papier (en 1/1000 pouces ou 1/100 mm) sélectionné pour l’impression.
CPageSetupDialog ::GetPortName
Appelez cette fonction après avoir appelé DoModal
pour récupérer le nom du port d’imprimante actuellement sélectionné.
CString GetPortName() const;
Valeur de retour
Nom du port d’imprimante actuellement sélectionné.
CPageSetupDialog ::m_psd
Structure de type PAGESETUPDLG, dont les membres stockent les caractéristiques de l’objet de dialogue.
PAGESETUPDLG m_psd;
Notes
Après avoir construit un CPageSetupDialog
objet, vous pouvez utiliser m_psd
pour définir différents aspects de la boîte de dialogue avant d’appeler la DoModal
fonction membre.
Si vous modifiez directement le membre de m_psd
données, vous remplacerez tout comportement par défaut.
Pour plus d’informations sur la structure PAGESETUPDLG , consultez le Kit de développement logiciel (SDK) Windows.
Consultez l’exemple de CPageSetupDialog ::CPageSetupDialog.
CPageSetupDialog ::OnDrawPage
Appelé par l’infrastructure pour dessiner une image d’écran d’une page imprimée.
virtual UINT OnDrawPage(
CDC* pDC,
UINT nMessage,
LPRECT lpRect);
Paramètres
pDC
Pointeur vers le contexte de l’appareil d’imprimante.
nMessage
Spécifie un message indiquant la zone de la page en cours de dessin. Il peut s'agir d'une des méthodes suivantes :
WM_PSD_FULLPAGERECT la zone de page entière.
WM_PSD_MINMARGINRECT marges minimales actuelles.
WM_PSD_MARGINRECT marges actuelles.
WM_PSD_GREEKTEXTRECT Contenu de la page.
WM_PSD_ENVSTAMPRECT Zone réservée pour une représentation de timbre postage.
WM_PSD_YAFULLPAGERECT Zone pour une représentation d’adresse de retour. Cette zone s’étend aux bords de la zone d’exemple de page.
lpRect
Pointeur vers un objet CRect ou RECT contenant les coordonnées de la zone de dessin.
Valeur de retour
Valeur différente de zéro si gérée ; sinon 0.
Notes
Cette image s’affiche ensuite dans le cadre de la boîte de dialogue mise en page OLE commune. L’implémentation par défaut dessine une image d’une page de texte.
Remplacez cette fonction pour personnaliser le dessin d’une zone spécifique de l’image ou l’image entière. Pour ce faire, vous pouvez utiliser une switch
instruction avec case
des instructions vérifiant la valeur de nMessage. Par exemple, pour personnaliser le rendu du contenu de l’image de page, vous pouvez utiliser l’exemple de code suivant :
switch (nMessage)
{
case WM_PSD_GREEKTEXTRECT:
DrawMyImage(pDC, lpRect); //draws my special graphic
return 1;
default:
return CPageSetupDialog::OnDrawPage(pDC, nMessage, lpRect);
}
Notez que vous n’avez pas besoin de gérer chaque cas de nMessage. Vous pouvez choisir de gérer un composant de l’image, plusieurs composants de l’image ou toute la zone.
CPageSetupDialog ::P reDrawPage
Appelé par l’infrastructure avant de dessiner l’image d’écran d’une page imprimée.
virtual UINT PreDrawPage(
WORD wPaper,
WORD wFlags,
LPPAGESETUPDLG pPSD);
Paramètres
wPaper
Spécifie une valeur qui indique la taille du papier. Cette valeur peut être l’une des valeurs DMPAPER_ répertoriées dans la description de la structure DEVMODE .
wFlags
Indique l’orientation du papier ou de l’enveloppe, et indique si l’imprimante est un appareil HPPCL (Langue de contrôle d’imprimante De Hpe Packard). Ce paramètre peut prendre l'une des valeurs suivantes :
0x001 Papier en mode paysage (matrice de points)
0x003 Papier en mode paysage (HPPCL)
0x005 Papier en mode portrait (matrice de points)
0x007 Papier en mode portrait (HPPCL)
enveloppe 0x00b en mode paysage (HPPCL)
enveloppe 0x00d en mode portrait (matrice de points)
enveloppe 0x019 en mode paysage (matrice de points)
enveloppe 0x01f en mode portrait (matrice de points)
pPSD
Pointeur désignant une structure PAGESETUPDLG
. Pour plus d’informations sur PAGESETUPDLG, consultez le Kit de développement logiciel (SDK) Windows.
Valeur de retour
Valeur différente de zéro si gérée ; sinon 0.
Notes
Remplacez cette fonction pour personnaliser le dessin de l’image. Si vous remplacez cette fonction et retournez TRUE, vous devez dessiner l’image entière. Si vous remplacez cette fonction et retournez FALSE, l’image par défaut entière est dessinée par l’infrastructure.
Voir aussi
Exemple WORDPAD MFC
CCommonDialog, classe
Graphique hiérarchique