Compartir a través de


Configuración de 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, alimentación de hoja, etc.)
  • Orientación de página (vertical o horizontal)
  • Ancho de los márgenes de página

Cree y muestre un cuadro de diálogo configuración de páginas inicializando una estructura de PAGESETUPDLG y pasando 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 típico configuración de página.

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

Si el usuario hace clic en el botón aceptar de, PageSetupDlg devuelve TRUE después de establecer varios miembros en la estructuraPAGESETUPDLGpara especificar las selecciones del usuario. Los miembros de ptPaperSize y rtMargin contienen los valores especificados por el usuario. Los hDevMode y hDevNames miembros contienen identificadores de memoria globales para las estructuras de 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 de configuración de página de 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 un DEVMODE o ESTRUCTURA DEVNAMES 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 Configuración de página de , use el valor de PSD_RETURNDEFAULT.

Si el sistema de medición predeterminado es 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 Flags miembro de la estructura PAGESETUPDLG.

Los valores iniciales de los márgenes son de una pulgada, de forma predeterminada. Si establece la marca 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 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.

Bandera Significado
PSD_DISABLEMARGINS Deshabilita los controles de edición en los que el usuario escribe la configuración del margen.
PSD_DISABLEORIENTATION Deshabilita el vertical de y los botones de radio 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 de.

 

Personalizar el cuadro de diálogo Configurar página

Puede proporcionar una plantilla personalizada para el cuadro de diálogo Configuración de página de , por ejemplo, si desea incluir controles adicionales que sean únicos para la aplicación. La funciónPageSetupDlg 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 cuadro 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 el hInstance y lpPageSetupTemplateName miembros de la estructura para identificar el nombre del módulo y del recurso.

        -O-

      • 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 de 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 configuración de página de. Para obtener más información sobre el procedimiento de enlace de 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 estructuraPAGESETUPDLG de.
  2. Especifique la dirección del procedimiento de enlace en el miembro lpfnPageSetupHook.

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

Personalización de la página de ejemplo

El cuadro de diálogo Configuración de 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ónpageSetupDlg de, 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 del PAGESETUPDLG estructura.
  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 de sello de sobre de una página de ejemplo 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 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_FULLPAGERECTo 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 de WM_PSD_* y puede dibujar el contenido de la página de ejemplo.