Imprimir hoja de propiedades
La hoja de propiedades Print es una interfaz de usuario estándar que permite al usuario especificar las propiedades de un trabajo de impresión determinado. La hoja de propiedades se compone de un conjunto de páginas de propiedades que varía según la impresora o la aplicación. En un subconjunto de páginas de propiedades estándar de Windows, algunas impresoras pueden agregar páginas de propiedades específicas del controlador y algunas aplicaciones podrían agregar páginas de propiedades específicas de la aplicación.
Para crear y mostrar una hoja de propiedades Print , inicialice una estructura PRINTDLGEX y pase la estructura a la función PrintDlgEx .
En la ilustración siguiente se muestra una hoja de propiedades Print típica.
La mayoría de los miembros de la estructura PRINTDLGEX son idénticos a los de la estructura PRINTDLG . Para obtener descripciones de cómo usar los miembros de la estructura común para interactuar con los controles del cuadro de diálogo, vea Imprimir cuadro de diálogo. En el resto de este tema se describen las características de la hoja de propiedades Print que difieren del cuadro de diálogo Imprimir .
Puede personalizar una hoja de propiedades Print especificando una plantilla de cuadro de diálogo personalizada para la parte inferior de la página General y especificando páginas de propiedades adicionales para seguir la página General . Para obtener más información, vea Personalización de la hoja de propiedades de impresión.
Puede implementar un objeto de devolución de llamada para recibir notificaciones y mensajes de la función PrintDlgEx mientras se muestra la hoja de propiedades. Las aplicaciones que proporcionan plantillas personalizadas o páginas adicionales usan el objeto de devolución de llamada para comunicarse con la hoja de propiedades. Para obtener más información, vea Callback Object for the Print Property Sheet.
La hoja de propiedades Print proporciona compatibilidad para especificar varios intervalos de páginas no contiguos que se van a imprimir. El miembro lpPageRanges de la estructura PRINTDLGEX especifica una matriz de estructuras PRINTPAGERANGE en las que cada estructura especifica un intervalo de páginas.
La hoja de propiedades Imprimir muestra un botón de radio Página actual como parte del grupo Intervalo de páginas de botones de radio. Para controlar el botón de radio Página actual , use las marcas PD_CURRENTPAGE y PD_NOCURRENTPAGE en el miembro Flags de la estructura PRINTDLGEX .
En esta sección se describen los temas siguientes.
- Personalización de la hoja de propiedades de impresión
- Callback (objeto) para la hoja de propiedades print
Personalización de la hoja de propiedades de impresión
Puede personalizar la hoja de propiedades Print de las siguientes maneras:
- Proporcione una plantilla personalizada para la parte inferior de la página General . Esto le permite incluir controles adicionales que son exclusivos de la aplicación. La función PrintDlgEx usa la plantilla personalizada en lugar de la plantilla predeterminada.
- Proporcione páginas de propiedades adicionales para seguir la página General .
- Proporcione un objeto de devolución de llamada. Para obtener más información, vea Callback Object for the Print Property Sheet.
No se puede cambiar la parte superior de la página General . No se pueden cambiar las páginas de propiedades proporcionadas por el controlador de impresora.
Para proporcionar una plantilla personalizada para la página General:
Cree una plantilla personalizada para la parte inferior de la página General modificando la plantilla PRINTDLGEXORD especificada en el archivo Prnsetup.dlg. Normalmente, la plantilla personalizada debe tener el mismo tamaño que la plantilla predeterminada. Sin embargo, puede ampliar la plantilla personalizada si especifica la marca PD_USELARGETEMPLATE para crear una página General más grande. Los identificadores de control usados en la plantilla de diálogo Imprimir predeterminada se definen en el archivo Dlgs.h.
Use la estructura PRINTDLGEX 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 PD_ENABLEPRINTTEMPLATE en el miembro Flags . Use los miembros hInstance y lpPrintTemplateName 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 PD_ENABLEPRINTTEMPLATEHANDLE . Use el miembro hInstance para identificar el objeto de memoria que contiene la plantilla.
Si usa una plantilla personalizada para definir controles adicionales, debe proporcionar un objeto de devolución de llamada para procesar la entrada de los controles. El objeto de devolución de llamada implementa un método IPrintDialogCallback::HandleMessage que recibe mensajes enviados al cuadro de diálogo personalizado.
Para proporcionar páginas de propiedades adicionales
Use la función para crear las páginas adicionales.
Use el miembro lphPropertyPages de la estructura PRINTDLGEX para especificar una matriz de identificadores en las páginas adicionales.
Los procedimientos del cuadro de diálogo especificados al crear cada mensaje de proceso de página enviados a las páginas.
Es posible que desee proporcionar un objeto de devolución de llamada que implemente la interfaz . La función PrintDlgEx usa esta interfaz para pasar a la aplicación un puntero a una interfaz IPrintDialogServices . Los procedimientos del cuadro de diálogo para las páginas de propiedades adicionales pueden usar esta interfaz para recuperar información sobre la impresora seleccionada actualmente.
Callback (objeto) para la hoja de propiedades print
Una aplicación que muestra una hoja de propiedades Print puede implementar un objeto de devolución de llamada para recibir notificaciones y mensajes de la función PrintDlgEx mientras se muestra la hoja de propiedades. Para proporcionar un objeto de devolución de llamada, especifique un puntero al objeto en el miembro lpCallback de la estructura PRINTDLGEX .
El objeto de devolución de llamada debe implementar la interfaz IPrintDialogCallback . La función PrintDlgEx llama a los métodos IPrintDialogCallback en las situaciones siguientes:
- Cuando se ha inicializado el cuadro de diálogo
- Cuando el usuario selecciona una impresora diferente de la lista de impresoras instaladas mostradas por la hoja de propiedades
- Cuando recibe mensajes para el cuadro de diálogo secundario en la parte inferior de la página General de la hoja de propiedades
El objeto de devolución de llamada también debe implementar la interfaz IObjectWithSite . La función PrintDlgEx llama al método para pasar un puntero a una interfaz IPrintDialogServices a una aplicación. Los métodos IPrintDialogCallback pueden usar la interfaz IPrintDialogServices para recuperar información sobre la impresora seleccionada actualmente. La interfaz IPrintDialogServices también es útil para las aplicaciones que crean páginas adicionales para seguir la página General de la hoja de propiedades Print . Los procedimientos del cuadro de diálogo para las páginas adicionales pueden llamar a métodos IPrintDialogServices .