Compartir a través de


Clase CPageSetupDialog

Encapsula los servicios proporcionados por el cuadro de diálogo Configurar página OLE común de Windows con compatibilidad adicional para configurar y modificar márgenes de impresión.

Sintaxis

class CPageSetupDialog : public CCommonDialog

Miembros

Constructores públicos

Nombre Descripción
CPageSetupDialog::CPageSetupDialog Construye un objeto CPageSetupDialog.

Métodos públicos

Nombre Descripción
CPageSetupDialog::CreatePrinterDC Crea un contexto de dispositivo para imprimir.
CPageSetupDialog::DoModal Muestra el cuadro de diálogo y permite que el usuario realice una selección.
CPageSetupDialog::GetDeviceName Devuelve el nombre de dispositivo de la impresora.
CPageSetupDialog::GetDevMode Devuelve el valor actual de DEVMODE de la impresora.
CPageSetupDialog::GetDriverName Devuelve el controlador utilizado por la impresora.
CPageSetupDialog::GetMargins Devuelve la configuración de márgenes actual de la impresora.
CPageSetupDialog::GetPaperSize Devuelve el tamaño del papel de la impresora.
CPageSetupDialog::GetPortName Devuelve el nombre del puerto de salida.
CPageSetupDialog::OnDrawPage Lo llama el marco de trabajo para representar una imagen de pantalla de una página impresa.
CPageSetupDialog::PreDrawPage Lo llama el marco de trabajo antes de representar una imagen de pantalla de una página impresa.

Miembros de datos públicos

Nombre Descripción
CPageSetupDialog::m_psd Estructura utilizada para personalizar un objeto CPageSetupDialog.

Comentarios

Esta clase está diseñada para que tenga lugar el cuadro de diálogo Configuración de impresión.

Para usar un objeto CPageSetupDialog, cree primero el objeto mediante el constructor CPageSetupDialog. Una vez que se ha construido el cuadro de diálogo, puede establecer o modificar los valores del miembro de datos m_psd para inicializar los valores de los controles del cuadro de diálogo. La estructura m_psd es de tipo PAGESETUPDLG.

Después de inicializar los controles del cuadro de diálogo, llame a la función miembro DoModal para mostrar el cuadro de diálogo y permitir que el usuario seleccionar opciones de impresión. DoModal devuelve si el usuario seleccionó el botón Aceptar (IDOK) o el botón Cancelar (IDCANCEL).

Si DoModal devuelve IDOK, puede usar varias de las funciones miembro de CPageSetupDialog o acceder al miembro de datos m_psd para recuperar la información de entrada por parte del usuario.

Nota:

Una vez descartado el cuadro de diálogo común de OLE Configurar página, el marco de trabajo no guardará los cambios realizados por el usuario. Es necesario que la propia aplicación guarde los valores de este cuadro de diálogo en una ubicación permanente, como el miembro la clase document o application de la aplicación.

Jerarquía de herencia

CObject

CCmdTarget

CWnd

CDialog

CCommonDialog

CPageSetupDialog

Requisitos

Encabezado: afxdlgs.h

CPageSetupDialog::CPageSetupDialog

Llame a esta función para construir un objeto CPageSetupDialog.

CPageSetupDialog(
    DWORD dwFlags = PSD_MARGINS | PSD_INWININIINTLMEASURE,
    CWnd* pParentWnd = NULL);

Parámetros

dwFlags
Una o varias marcas que puede usar para personalizar la configuración del cuadro de diálogo. Los valores se pueden combinar mediante el operador bit a bit OR. Estos valores tienen los significados siguientes:

  • PSD_DEFAULTMINMARGINS Establece los anchos mínimos permitidos para que los márgenes de página sean los mismos que los mínimos de la impresora. Esta marca se omite si también se especifican las marcas PSD_MARGINS y PSD_MINMARGINS.

  • PSD_INWININIINTLMEASURE No implementada.

  • PSD_MINMARGINS Hace que el sistema use los valores especificados en el miembro rtMinMargin como los anchos mínimos permitidos para los márgenes izquierdo, superior, derecho e inferior. El sistema impide que el usuario escriba un ancho inferior al mínimo especificado. Si no se especifica PSD_MINMARGINS, el sistema establece los anchos mínimos permitidos en los permitidos por la impresora.

  • PSD_MARGINS Activa el área de control de márgenes.

  • PSD_INTHOUSANDTHSOFINCHES Hace que las unidades del cuadro de diálogo se midan en 1/1000 de una pulgada.

  • PSD_INHUNDREDTHSOFMILLIMETERS Hace que las unidades del cuadro de diálogo se midan en 1/100 de un milímetro.

  • PSD_DISABLEMARGINS Deshabilita los controles del cuadro de diálogo de márgenes.

  • PSD_DISABLEPRINTER Deshabilita el botón Impresora.

  • PSD_NOWARNING Impide que se muestre el mensaje de advertencia cuando no hay ninguna impresora predeterminada.

  • PSD_DISABLEORIENTATION Deshabilita el control del cuadro de diálogo de orientación de página.

  • PSD_RETURNDEFAULT Hace que CPageSetupDialog devuelva las estructuras DEVMODE y DEVNAMES que se han inicializado para la impresora predeterminada del sistema sin mostrar un cuadro de diálogo. Se supone que tanto hDevNames como hDevMode son NULL; de lo contrario, la función devuelve un error. Si la impresora predeterminada del sistema es compatible con un controlador de impresora antiguo (anterior a la versión 3.0 de Windows), solo se devuelve hDevNames; hDevMode es NULL.

  • PSD_DISABLEPAPER Deshabilita el control de selección de papel.

  • PSD_SHOWHELP Hace que el cuadro de diálogo muestre el botón Ayuda. El miembro hwndOwner no debe ser NULL si se especifica esta marca.

  • PSD_ENABLEPAGESETUPHOOK Habilita la función de enlace especificada en lpfnSetupHook.

  • PSD_ENABLEPAGESETUPTEMPLATE Hace que el sistema operativo cree el cuadro de diálogo mediante el cuadro de diálogo de plantilla identificado por hInstance y lpSetupTemplateName.

  • PSD_ENABLEPAGESETUPTEMPLATEHANDLE Indica que hInstance identifica un bloque de datos que contiene una plantilla de cuadro de diálogo precargada. El sistema omite lpSetupTemplateName si se especifica esta marca.

  • PSD_ENABLEPAGEPAINTHOOK Habilita la función de enlace especificada en lpfnPagePaintHook.

  • PSD_DISABLEPAGEPAINTING Deshabilita el área de dibujo del cuadro de diálogo.

pParentWnd
Puntero al elemento primario o propietario del cuadro de diálogo.

Comentarios

Para mostrar el cuadro de diálogo, utilice la función DoModal.

Ejemplo

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

Crea un contexto de dispositivo de impresora a partir de las estructuras DEVMODE y DEVNAMES.

HDC CreatePrinterDC();

Valor devuelto

Manipulador del contexto de dispositivo (DC) de impresora recién creado.

CPageSetupDialog::DoModal

Llame a esta función para mostrar el cuadro de diálogo común de OLE de Windows Configurar página y permitir al usuario seleccionar varias opciones de configuración de impresión, como los márgenes de impresión, el tamaño y la orientación del papel y la impresora de destino.

virtual INT_PTR DoModal();

Valor devuelto

IDOK o IDCANCEL. Si se devuelve IDCANCEL, llame a la función CommDlgExtendedError de Windows para determinar si se ha producido un error.

IDOK y IDCANCEL son constantes que indican si el usuario seleccionó el botón Aceptar o Cancelar.

Comentarios

Además, el usuario puede acceder a las opciones de configuración de la impresora, como la ubicación de red y las propiedades específicas de la impresora seleccionada.

Si quiere inicializar las distintas opciones del cuadro de diálogo Configurar página estableciendo los miembros de la estructura m_psd, debe hacerlo antes de llamar a DoModal, pero después de construir el objeto de cuadro de diálogo. Después de llamar a DoModal, llame a otras funciones miembro para recuperar la configuración o la información de entrada del usuario en el cuadro de diálogo.

Si desea propagar la configuración actual especificada por el usuario, realice una llamada a CWinApp::SelectPrinter. Esta función toma la información del objeto CPageSetupDialog e inicializa y selecciona un nuevo contexto de dispositivo de impresora con los atributos adecuados.

AfxGetApp()->SelectPrinter(psd.m_psd.hDevNames, psd.m_psd.hDevMode);

Ejemplo

Consulte el ejemplo de CPageSetupDialog::CPageSetupDialog.

CPageSetupDialog::GetDeviceName

Llame a esta función después de llamar a DoModal para recuperar el nombre de la impresora seleccionada actualmente.

CString GetDeviceName() const;

Valor devuelto

Nombre de dispositivo usado por el objeto CPageSetupDialog.

CPageSetupDialog::GetDevMode

Llame a esta función después de llamar a DoModal para recuperar información sobre el contexto de dispositivo de impresora del objeto CPageSetupDialog.

LPDEVMODE GetDevMode() const;

Valor devuelto

Estructura de datos DEVMODE, que contiene información sobre la inicialización del dispositivo y el entorno de un controlador de impresión. Debe desbloquear la memoria ocupada por esta estructura con la función GlobalUnlock de Windows, que se describe en Windows SDK.

CPageSetupDialog::GetDriverName

Llame a esta función después de llamar a DoModal para recuperar el nombre del controlador de dispositivo de impresora definido por el sistema.

CString GetDriverName() const;

Valor devuelto

Un objeto CString que especifica el nombre del controlador definido por el sistema.

Comentarios

Use un puntero al objeto CString devuelto por GetDriverName como valor de lpszDriverName en una llamada a CDC::CreateDC.

CPageSetupDialog::GetMargins

Llame a esta función después de una llamada a DoModal para recuperar los márgenes del controlador del dispositivo de impresora.

void GetMargins(
    LPRECT lpRectMargins,
    LPRECT lpRectMinMargins) const;

Parámetros

lpRectMargins
Puntero a una estructura RECT o un objeto CRect que describe (en 1/1000 pulgada o 1/100 mm) los márgenes de impresión de la impresora seleccionada actualmente. Pase NULL para este parámetro si no está interesado en este rectángulo.

lpRectMinMargins
Puntero a una estructura RECT o un objeto CRect que describe (en 1/1000 pulgada o 1/100 mm) los márgenes mínimos de impresión de la impresora seleccionada actualmente. Pase NULL para este parámetro si no está interesado en este rectángulo.

CPageSetupDialog::GetPaperSize

Llame a esta función para recuperar el tamaño del papel seleccionado para imprimir.

CSize GetPaperSize() const;

Valor devuelto

Objeto CSize que contiene el tamaño del papel (en 1/1000 pulgada o 1/100 mm) seleccionado para imprimir.

CPageSetupDialog::GetPortName

Llame a esta función después de llamar a DoModal para recuperar el nombre del puerto de la impresora seleccionado actualmente.

CString GetPortName() const;

Valor devuelto

Nombre del puerto de impresora seleccionado actualmente.

CPageSetupDialog::m_psd

Estructura de tipo PAGESETUPDLG, cuyos miembros almacenan las características del objeto de cuadro de diálogo.

PAGESETUPDLG m_psd;

Comentarios

Después de construir un objeto CPageSetupDialog, puede usar m_psd para establecer varios aspectos del cuadro de diálogo antes de llamar a la función miembro DoModal.

Si modifica el miembro de datos m_psd directamente, invalidará cualquier comportamiento predeterminado.

Para obtener más información sobre la estructura PAGESETUPDLG, consulte Windows SDK.

Consulte el ejemplo de CPageSetupDialog::CPageSetupDialog.

CPageSetupDialog::OnDrawPage

Lo llama el marco de trabajo para dibujar una imagen de pantalla de una página impresa.

virtual UINT OnDrawPage(
    CDC* pDC,
    UINT nMessage,
    LPRECT lpRect);

Parámetros

pDC
Apunta al contexto del dispositivo de la impresora.

nMessage
Especifica un mensaje que indica el área de la página que se está dibujando actualmente. Puede ser uno de los siguientes:

  • WM_PSD_FULLPAGERECT Área de página completa.

  • WM_PSD_MINMARGINRECT Márgenes mínimos actuales.

  • WM_PSD_MARGINRECT Márgenes actuales.

  • WM_PSD_GREEKTEXTRECT Contenido de la página.

  • WM_PSD_ENVSTAMPRECT Área reservada para una representación de sello de correos.

  • WM_PSD_YAFULLPAGERECT Área para una representación de dirección de devolución. Este área se extiende hasta los bordes del área de página de ejemplo.

lpRect
Puntero a un objeto CRect o RECT que contiene las coordenadas del área de dibujo.

Valor devuelto

Valor distinto de cero si se controla; de lo contrario, 0.

Comentarios

A continuación, esta imagen se muestra como parte del cuadro de diálogo común de OLE Configurar página. La implementación predeterminada dibuja una imagen de una página de texto.

Invalide esta función para personalizar el dibujo de un área específica de la imagen o toda la imagen. Puede hacerlo mediante una instrucción switch con instrucciones case que comprueben el valor de nMessage. Por ejemplo, para personalizar la representación del contenido de la imagen de la página, puede usar el código de ejemplo siguiente:

switch (nMessage)
{
case WM_PSD_GREEKTEXTRECT:
   DrawMyImage(pDC, lpRect);    //draws my special graphic
   return 1;
default:
   return CPageSetupDialog::OnDrawPage(pDC, nMessage, lpRect);
}

Tenga en cuenta que no es necesario controlar todos los casos de nMessage. Puede elegir controlar un componente de la imagen, varios componentes de la imagen o toda el área.

CPageSetupDialog::PreDrawPage

Lo llama el marco de trabajo antes de dibujar la imagen de pantalla de una página impresa.

virtual UINT PreDrawPage(
    WORD wPaper,
    WORD wFlags,
    LPPAGESETUPDLG pPSD);

Parámetros

wPaper
Especifica un valor que indica el tamaño del papel. Este valor puede ser uno de los valores DMPAPER_ enumerados en la descripción de la estructura DEVMODE.

wFlags
Indica la orientación del papel o el sobre, y si la impresora es un dispositivo de matriz de puntos o HPPCL (Hewlett Packard Printer Control Language). Este parámetro puede tener uno de los valores siguientes:

  • 0x001 Papel en modo horizontal (matriz de puntos)

  • 0x003 Papel en modo horizontal (HPPCL)

  • 0x005 Papel en modo vertical (matriz de puntos)

  • 0x007 Papel en modo vertical (HPPCL)

  • 0x00b Sobre en modo horizontal (HPPCL)

  • 0x00d Sobre en modo vertical (matriz de puntos)

  • 0x019 Sobre en modo horizontal (matriz de puntos)

  • 0x01f Sobre en modo vertical (matriz de puntos)

pPSD
Puntero a una estructura PAGESETUPDLG. Para obtener más información sobre PAGESETUPDLG, consulte Windows SDK.

Valor devuelto

Valor distinto de cero si se controla; de lo contrario, 0.

Comentarios

Invalide esta función para personalizar el dibujo de la imagen. Si invalida esta función y devuelve TRUE, debe dibujar toda la imagen. Si invalida esta función y devuelve FALSE, el marco de trabajo dibuja toda la imagen predeterminada.

Consulte también

WORDPAD de ejemplo de MFC
CCommonDialog (clase)
Gráfico de jerarquías