Compartir a través de


Configurar página (cuadro de diálogo)

Muestra un cuadro de diálogo modal que permite al usuario establecer los siguientes atributos de la página impresa:

  • Tipo de papel (sobre, legal, carta, etc.)
  • Fuente de papel (alimentación manual, alimentación tractor, alimentador de hojas, etc.)
  • Orientación de página (vertical u horizontal)
  • Ancho de los márgenes de página

Para crear y mostrar un cuadro de diálogo Configurar página , inicialice una estructura PAGESETUPDLG y pase la estructura a la función PageSetupDlg . Sin embargo, los atributos presentados en el cuadro de diálogo varían en función de las funcionalidades de la impresora. En la ilustración siguiente se muestra un cuadro de diálogo de configuración de página típico.

cuadro de diálogo de configuración de página

Si el usuario hace clic en el botón Aceptar , PageSetupDlg devuelve TRUE después de establecer varios miembros en la estructura PAGESETUPDLG para especificar las selecciones del usuario. Los miembros ptPaperSize y rtMargin contienen los valores especificados por el usuario. Los miembros hDevMode y hDevNames contienen identificadores de memoria globales para las estructuras DEVMODE y DEVNAMES . Estas estructuras contienen información adicional de página, así como información sobre la impresora. Puede usar esta información para preparar la salida que se enviará a la impresora seleccionada.

Si el usuario cancela el cuadro de diálogo Configurar página o se produce un error, PageSetupDlg devuelve FALSE. Para determinar la causa del error, llame a la función CommDlgExtendedError para recuperar el valor de error extendido.

En esta sección se describen los temas siguientes.

Inicialización del cuadro de diálogo Configurar página

De forma predeterminada, el cuadro de diálogo Configurar página muestra información sobre la impresora predeterminada actual. Para dirigir el cuadro de diálogo para mostrar información sobre una impresora específica, establezca los miembros de una estructura DEVMODE oDEVNAMES y asigne los identificadores de memoria global de estas estructuras al miembro correspondiente en PAGESETUPDLG. Si especifica el nombre de una impresora que no está instalada actualmente, el cuadro de diálogo muestra un mensaje de error. Para evitar que el cuadro de diálogo muestre mensajes de error, use el valor PSD_NOWARNING . Para recuperar información sobre la impresora predeterminada sin mostrar el cuadro de diálogo Configurar página , use el valor de PSD_RETURNDEFAULT .

Si el sistema de medición predeterminado es de pulgadas, el cuadro de diálogo usa milésimas de pulgadas como unidad de medida predeterminada. Si el sistema de medición predeterminado es métrica, el cuadro de diálogo usa centésimas de milímetros como unidad de medida predeterminada. Para invalidar la unidad de medida predeterminada, establezca la marca PSD_INHUNDREDTHSOFMILLIMETERS o PSD_INTHOUSANDTHSOFINCHES en el miembro Flags de la estructura PAGESETUPDLG .

Los valores iniciales de los márgenes son de una pulgada, de forma predeterminada. Si establece la marca de PSD_MARGINS , el cuadro de diálogo muestra los valores de margen iniciales especificados en el miembro rtMargin . Los valores mínimos predeterminados que el usuario puede especificar para los márgenes son los márgenes mínimos permitidos por la impresora. Si establece la marca de PSD_MINMARGINS , el cuadro de diálogo aplica los márgenes mínimos especificados en el miembro rtMinMargin .

Para evitar que los usuarios seleccionen determinadas opciones, establezca cualquier combinación de las marcas siguientes para deshabilitar los controles correspondientes.

Marca Significado
PSD_DISABLEMARGINS Deshabilita los controles de edición en los que el usuario escribe la configuración de margen.
PSD_DISABLEORIENTATION Deshabilita los botones de radio Vertical y Horizontal .
PSD_DISABLEPAPER Deshabilita los controles para seleccionar el tamaño del papel y el origen del papel.
PSD_DISABLEPRINTER Deshabilita el botón Impresora .

 

Personalización del cuadro de diálogo Configurar página

Puede proporcionar una plantilla personalizada para el cuadro de diálogo Configurar página , por ejemplo, si desea incluir controles adicionales que sean exclusivos de la aplicación. La función PageSetupDlg usa la plantilla personalizada en lugar de la plantilla predeterminada.

Para proporcionar una plantilla personalizada para el cuadro de diálogo Configurar página

  1. Cree la plantilla personalizada modificando la plantilla predeterminada especificada en el archivo Prnsetup.dlg. Los identificadores de control usados en la plantilla de diálogo Configuración de página predeterminada se definen en el archivo Dlgs.h.
  2. Use la estructura PAGESETUPDLG para habilitar la plantilla de la siguiente manera:
      • Si la plantilla personalizada es un recurso de una aplicación o biblioteca de vínculos dinámicos, establezca la marca PSD_ENABLEPAGESETUPTEMPLATE en el miembro Flags . Use los miembros hInstance y lpPageSetupTemplateName de la estructura para identificar el nombre del módulo y del recurso.

        -O bien-

      • Si la plantilla personalizada ya está en memoria, establezca la marca PSD_ENABLEPAGESETUPTEMPLATEHANDLE . Use el miembro hPageSetupTemplate para identificar el objeto de memoria que contiene la plantilla.

Para filtrar los mensajes enviados al procedimiento del cuadro de diálogo, puede proporcionar un procedimiento de enlace PageSetupHook . Si usa una plantilla personalizada para definir controles adicionales, debe proporcionar un procedimiento de enlace PageSetupHook para procesar la entrada de los controles. Además, puede proporcionar un procedimiento de enlace PagePaintHook para personalizar el contenido de la página de ejemplo que muestra el cuadro de diálogo Configurar página. Para obtener más información sobre el procedimiento de enlace PagePaintHook , consulte Personalización de la página de ejemplo.

Para habilitar un procedimiento de enlace PageSetupHook

  1. Establezca la marca PSD_ENABLEPAGESETUPHOOK en el miembro Flags de la estructura PAGESETUPDLG .
  2. Especifique la dirección del procedimiento de enlace en el miembro lpfnPageSetupHook .

Después de procesar su mensaje de WM_INITDIALOG , el procedimiento del cuadro de diálogo envía un mensaje WM_INITDIALOG al procedimiento de enlace PageSetupHook . El parámetro lParam de este mensaje es un puntero a la estructura PAGESETUPDLG utilizada para inicializar el cuadro de diálogo.

Personalización de la página de ejemplo

El cuadro de diálogo Configurar página incluye una imagen de una página de ejemplo que muestra cómo afectan las selecciones del usuario a la apariencia de la salida impresa. La imagen consta de un rectángulo que representa el tipo de papel o sobre seleccionado, con un rectángulo de línea de puntos que representa los márgenes actuales y caracteres parciales (texto griego) para mostrar el aspecto del texto en la página impresa.

Al llamar a la función PageSetupDlg , puede proporcionar un procedimiento de enlace PagePaintHook para personalizar la apariencia de la página de ejemplo.

Para habilitar un procedimiento de enlace PagePaintHook

  1. Establezca la marca PSD_ENABLEPAGEPAINTHOOK en el miembro Flags de la estructura PAGESETUPDLG .
  2. Especifique la dirección del procedimiento de enlace en el miembro lpfnPagePaintHook .

Cada vez que el cuadro de diálogo está a punto de dibujar el contenido de la página de ejemplo, el procedimiento de enlace recibe los siguientes mensajes en el orden en que se muestran.

Mensaje Significado
WM_PSD_PAGESETUPDLG El cuadro de diálogo está a punto de dibujar la página de ejemplo. El procedimiento de enlace puede usar este mensaje para preparar el contenido de la página de ejemplo.
WM_PSD_FULLPAGERECT El cuadro de diálogo está a punto de dibujar la página de ejemplo. Este mensaje especifica el rectángulo delimitador de la página de ejemplo.
WM_PSD_MINMARGINRECT El cuadro de diálogo está a punto de dibujar la página de ejemplo. Este mensaje especifica el rectángulo de margen.
WM_PSD_MARGINRECT El cuadro de diálogo está a punto de dibujar el rectángulo de margen.
WM_PSD_GREEKTEXTRECT El cuadro de diálogo está a punto de dibujar el texto griego dentro del rectángulo de margen.
WM_PSD_ENVSTAMPRECT El cuadro de diálogo está a punto de dibujar en el rectángulo sobre-stamp de una página de muestra de sobre. Este mensaje solo se envía para sobres.
WM_PSD_YAFULLPAGERECT El cuadro de diálogo está a punto de dibujar la parte de la dirección de retorno de una página de ejemplo de sobre. Este mensaje se envía para sobres y otros tamaños de papel.

 

Si el procedimiento de enlace devuelve TRUE para cualquiera de los tres primeros mensajes de una secuencia de dibujo (WM_PSD_PAGESETUPDLG, WM_PSD_FULLPAGERECT o WM_PSD_MINMARGINRECT), el cuadro de diálogo no envía más mensajes y no dibuja en la página de ejemplo hasta la próxima vez que el sistema necesite volver a dibujar la página de ejemplo. Si el procedimiento de enlace devuelve FALSE para los tres mensajes, el cuadro de diálogo envía los mensajes restantes de la secuencia de dibujo.

Si el procedimiento de enlace devuelve TRUE para cualquiera de los mensajes restantes de una secuencia de dibujo, el cuadro de diálogo no dibuja la parte correspondiente de la página de ejemplo. Si el procedimiento de enlace devuelve FALSE para cualquiera de estos mensajes, el cuadro de diálogo dibuja esa parte de la página de ejemplo.

Para evitar que el cuadro de diálogo dibuje el contenido de la página de ejemplo, puede establecer la marca PSD_DISABLEPAGEPAINTING . Esta marca no afecta al procedimiento de enlace PagePaintHook , que sigue recibiendo todos los mensajes WM_PSD_* y puede dibujar el contenido de la página de ejemplo.