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 CPageSetupDialogaccé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

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

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 deux hDevNames et hDevMode 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 uniquement hDevNames ; 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 et lpSetupTemplateName.

  • 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 ignore lpSetupTemplateName 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