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
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 tantohDevNames
comohDevMode
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 devuelvehDevNames
;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
ylpSetupTemplateName
.PSD_ENABLEPAGESETUPTEMPLATEHANDLE Indica que
hInstance
identifica un bloque de datos que contiene una plantilla de cuadro de diálogo precargada. El sistema omitelpSetupTemplateName
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