Estructura PRINTDLGA (commdlg.h)
Contiene información que la función PrintDlg usa para inicializar el cuadro de diálogo Imprimir. Una vez que el usuario cierra el cuadro de diálogo, el sistema usa esta estructura para devolver información sobre las selecciones del usuario.
Sintaxis
typedef struct tagPDA {
DWORD lStructSize;
HWND hwndOwner;
HGLOBAL hDevMode;
HGLOBAL hDevNames;
HDC hDC;
DWORD Flags;
WORD nFromPage;
WORD nToPage;
WORD nMinPage;
WORD nMaxPage;
WORD nCopies;
HINSTANCE hInstance;
LPARAM lCustData;
LPPRINTHOOKPROC lpfnPrintHook;
LPSETUPHOOKPROC lpfnSetupHook;
LPCSTR lpPrintTemplateName;
LPCSTR lpSetupTemplateName;
HGLOBAL hPrintTemplate;
HGLOBAL hSetupTemplate;
} PRINTDLGA, *LPPRINTDLGA;
Miembros
lStructSize
Tipo: DWORD
Tamaño de la estructura, en bytes.
hwndOwner
Tipo: HWND
Identificador de la ventana que posee el cuadro de diálogo. Este miembro puede ser cualquier identificador de ventana válido o puede ser NULL si el cuadro de diálogo no tiene propietario.
hDevMode
Tipo: HGLOBAL
Identificador de un objeto de memoria global móvil que contiene una estructura DEVMODE . Si hDevMode no es NULL en la entrada, debe asignar un bloque de memoria móvil para la estructura DEVMODE e inicializar sus miembros. La función PrintDlg usa los datos de entrada para inicializar los controles en el cuadro de diálogo. Cuando PrintDlg devuelve, los miembros DEVMODE indican la entrada del usuario.
Si hDevMode es NULL en la entrada, PrintDlg asigna memoria para la estructura DEVMODE , inicializa sus miembros para indicar la entrada del usuario y devuelve un identificador que lo identifica.
Si el controlador de dispositivo de la impresora especificada no admite modos de dispositivo extendidos, hDevMode es NULL cuando PrintDlg devuelve.
Si el nombre del dispositivo (especificado por el miembro dmDeviceName de la estructura DEVMODE ) no aparece en la sección [devices] de WIN.INI, PrintDlg devuelve un error.
Para obtener más información sobre los miembros hDevMode y hDevNames , vea la sección Comentarios al final de este tema.
hDevNames
Tipo: HGLOBAL
Identificador de un objeto de memoria global móvil que contiene una estructura DEVNAMES . Si hDevNames no es NULL en la entrada, debe asignar un bloque de memoria extraíble para la estructura DEVNAMES e inicializar sus miembros. La función PrintDlg usa los datos de entrada para inicializar los controles en el cuadro de diálogo. Cuando se devuelve PrintDlg , los miembros DEVNAMES contienen información para la impresora elegida por el usuario. Puede usar esta información para crear un contexto de dispositivo o un contexto de información.
El miembro hDevNames puede ser NULL, en cuyo caso PrintDlg asigna memoria para la estructura DEVNAMES , inicializa sus miembros para indicar la entrada del usuario y devuelve un identificador que lo identifica.
Para obtener más información sobre los miembros hDevMode y hDevNames , vea la sección Comentarios al final de este tema.
hDC
Tipo: HDC
Identificador de un contexto de dispositivo o un contexto de información, en función de si el miembro Flags especifica la marca PD_RETURNDC o PC_RETURNIC . Si no se especifica ninguna marca, el valor de este miembro no está definido. Si se especifican ambas marcas, PD_RETURNDC tiene prioridad.
Flags
Tipo: DWORD
Inicializa el cuadro de diálogo Imprimir . Cuando se devuelve el cuadro de diálogo, establece estas marcas para indicar la entrada del usuario. Este miembro puede ser uno o varios de los valores siguientes.
Valor | Significado |
---|---|
|
Marca predeterminada que indica que el botón de radio Todo está seleccionado inicialmente. Esta marca se usa como marcador de posición para indicar que no se especifican las marcas PD_PAGENUMS y PD_SELECTION . |
|
Si se establece esta marca, se activa la casilla Collate .
Si se establece esta marca cuando se devuelve la función PrintDlg , la aplicación debe simular la intercalación de varias copias. Para obtener más información, vea la descripción de la marca PD_USEDEVMODECOPIESANDCOLLATE . Consulte PD_NOPAGENUMS. |
|
Deshabilita la casilla Imprimir en archivo . |
|
Habilita el procedimiento de enlace especificado en el miembro lpfnPrintHook . Esto habilita el procedimiento de enlace para el cuadro de diálogo Imprimir . |
|
Indica que los miembros hInstance y lpPrintTemplateName especifican un reemplazo para la plantilla predeterminada del cuadro de diálogo Imprimir . |
|
Indica que el miembro hPrintTemplate identifica un bloque de datos que contiene una plantilla de cuadro de diálogo precargada. Esta plantilla reemplaza la plantilla predeterminada para el cuadro de diálogo Imprimir . El sistema omite el miembro lpPrintTemplateName si se especifica esta marca. |
|
Habilita el procedimiento de enlace especificado en el miembro lpfnSetupHook . Esto habilita el procedimiento de enlace para el cuadro de diálogo Configurar impresión . |
|
Indica que los miembros hInstance y lpSetupTemplateName especifican un reemplazo para la plantilla predeterminada del cuadro de diálogo Configurar impresión . |
|
Indica que el miembro hSetupTemplate identifica un bloque de datos que contiene una plantilla de cuadro de diálogo precargada. Esta plantilla reemplaza la plantilla predeterminada para el cuadro de diálogo Configurar impresión . El sistema omite el miembro lpSetupTemplateName si se especifica esta marca. |
|
Oculta la casilla Imprimir en archivo . |
|
Oculta y deshabilita el botón Red . |
|
Deshabilita el botón de radio Pages y los controles de edición asociados. Además, hace que la casilla Intercalar aparezca en el cuadro de diálogo. |
|
Deshabilita el botón de radio Selección . |
|
Impide que se muestre el mensaje de advertencia cuando no hay ninguna impresora predeterminada. |
|
Si se establece esta marca, se selecciona el botón de radio Pages . Si esta marca se establece cuando la función PrintDlg devuelve, los miembros nFromPage y nToPage indican las páginas iniciales y finales especificadas por el usuario. |
|
Hace que el sistema muestre el cuadro de diálogo Configurar impresión en lugar del cuadro de diálogo Imprimir . |
|
Si se establece esta marca, se activa la casilla Imprimir en archivo . Si se establece esta marca cuando devuelve la función PrintDlg , el desplazamiento indicado por el miembro wOutputOffset de la estructura DEVNAMES contiene la cadena "FILE:". Al llamar a la función StartDoc para iniciar la operación de impresión, especifique esta cadena "FILE:" en el miembro lpszOutput de la estructura DOCINFO . Especificar esta cadena hace que el subsistema de impresión consulte al usuario el nombre del archivo de salida. |
|
Hace que PrintDlg devuelva un contexto de dispositivo que coincida con las selecciones realizadas por el usuario en el cuadro de diálogo. El contexto del dispositivo se devuelve en hDC. |
|
Si se establece esta marca, la función PrintDlg no muestra el cuadro de diálogo. En su lugar, establece los miembros hDevNames y hDevMode para controlar las estructuras DEVMODE y DEVNAMES que se inicializan para la impresora predeterminada del sistema. Tanto hDevNames como hDevMode deben ser NULL, o PrintDlg devuelve un error. |
|
De forma similar a la marca PD_RETURNDC , salvo que esta marca devuelve un contexto de información en lugar de un contexto de dispositivo. Si no se especifica ni PD_RETURNDCni PD_RETURNIC , hDC no está definido en la salida. |
|
Si se establece esta marca, se selecciona el botón de radio Selección . Si no se establece PD_PAGENUMS ni PD_SELECTION , se selecciona el botón de radio Todo . |
|
Hace que el cuadro de diálogo muestre el botón Ayuda . El miembro hwndOwner debe especificar la ventana para recibir los mensajes registrados HELPMSGSTRING que envía el cuadro de diálogo cuando el usuario hace clic en el botón Ayuda . |
|
Igual que PD_USEDEVMODECOPIESANDCOLLATE. |
|
Esta marca indica si la aplicación admite varias copias e intercalación. Establezca esta marca en la entrada para indicar que la aplicación no admite varias copias e intercalación. En este caso, el miembro nCopies de la estructura PRINTDLG siempre devuelve 1 y PD_COLLATE nunca se establece en el miembro Flags .
Si no se establece esta marca, la aplicación es responsable de imprimir e intercalar varias copias. En este caso, el miembro nCopies de la estructura PRINTDLG indica el número de copias que el usuario desea imprimir y la marca PD_COLLATE del miembro Flags indica si el usuario quiere intercalación. Independientemente de si se establece esta marca, una aplicación puede determinar desde nCopies y PD_COLLATE cuántas copias se van a representar y si se imprimen intercaladas. Si se establece esta marca y el controlador de impresora no admite varias copias, el control De edición copias está deshabilitado. De forma similar, si se establece esta marca y el controlador de impresora no admite la intercalación, la casilla Intercalación está deshabilitada. Los miembros dmCopies y dmCollate de la estructura DEVMODE contienen las copias y la información de intercalación utilizada por el controlador de impresora. Si se establece esta marca y el controlador de impresora admite varias copias, el miembro dmCopies indica el número de copias solicitadas por el usuario. Si se establece esta marca y el controlador de impresora admite la intercalación, el miembro dmCollate de la estructura DEVMODE indica si el usuario quiere intercalación. Si no se establece esta marca, el miembro dmCopies siempre devuelve 1 y el miembro dmCollate siempre es cero. Problema conocido en Windows 2000/XP/2003: Si no se establece esta marca antes de llamar a PrintDlg, PrintDlg podría intercambiar valores nCopies y dmCopies cuando se devuelve. La solución alternativa para este problema es usar dmCopies si su valor es mayor que 1; en caso contrario, use nCopies para obtener el número real de copias que se imprimirán cuando PrintDlg devuelva. |
Para asegurarse de que PrintDlg o PrintDlgEx devuelven los valores correctos en los miembros dmCopies y dmCollate de la estructura DEVMODE , establezca PD_RETURNDC = TRUE y PD_USEDEVMODECOPIESANDCOLLATE = TRUE. Al hacerlo, el miembro nCopies de la estructura PRINTDLG siempre es 1 y PD_COLLATE siempre es FALSE.
Para asegurarse de que PrintDlg o PrintDlgEx devuelve los valores correctos en nCopies y PD_COLLATE, establezca PD_RETURNDC = TRUE y PD_USEDEVMODECOPIESANDCOLLATE = FALSE. Al hacerlo, dmCopies siempre es 1 y dmCollate siempre es FALSE.
En Windows Vista y Windows 7, cuando se llama a PrintDlg o PrintDlgEx con PD_RETURNDC establecido en TRUE y PD_USEDEVMODECOPIESANDCOLLATE establecido en FALSE, la función PrintDlg o PrintDlgEx establece el número de copias en el miembro nCopies de la estructura PRINTDLG y establece el número de copias en la estructura representada por el miembro hDC de la estructura PRINTDLG .
Al realizar llamadas a GDI, debe omitir el valor de nCopies, tener en cuenta el valor como 1 y usar el hDC devuelto para evitar imprimir copias duplicadas.
nFromPage
Tipo: WORD
Valor inicial del control de edición de página inicial.
Cuando PrintDlg devuelve, nFromPage es la página inicial especificada por el usuario. Si se selecciona el botón de radio Pages cuando el usuario hace clic en el botón Aceptar , PrintDlg establece la marca PD_PAGENUMS y no vuelve hasta que el usuario escribe un valor de página inicial que se encuentra dentro del intervalo de página mínimo a máximo.
Si el valor de entrada de nFromPage o nToPage está fuera del intervalo mínimo o máximo, PrintDlg devuelve un error solo si se especifica la marca PD_PAGENUMS ; de lo contrario, muestra el cuadro de diálogo, pero cambia el valor fuera del intervalo al valor mínimo o máximo.
nToPage
Tipo: WORD
Valor inicial del control de edición de página final. Cuando PrintDlg devuelve, nToPage es la página final especificada por el usuario. Si se selecciona el botón de radio Pages cuando el uso hace clic en el botón Ok , PrintDlg establece la marca PD_PAGENUMS y no vuelve hasta que el usuario escribe un valor de página final que está dentro del intervalo de página mínimo al máximo.
nMinPage
Tipo: WORD
Valor mínimo para el intervalo de páginas especificado en los controles de edición de página Desde y Para . Si nMinPage es igual a nMaxPage, se deshabilitan el botón de radio Pages y los controles de edición de página inicial y final.
nMaxPage
Tipo: WORD
Valor máximo del intervalo de páginas especificado en los controles de edición de página Desde y To .
nCopies
Tipo: WORD
Número inicial de copias para el control de edición Copias si hDevMode es NULL; de lo contrario, el miembro dmCopies de la estructura DEVMODE contiene el valor inicial. Cuando PrintDlg devuelve, nCopies contiene el número real de copias que se van a imprimir. Este valor depende de si la aplicación o el controlador de impresora son responsables de imprimir varias copias. Si la marca PD_USEDEVMODECOPIESANDCOLLATE se establece en el miembro Flags , nCopies siempre es 1 en devolución y el controlador de impresora es responsable de imprimir varias copias. Si no se establece la marca, la aplicación es responsable de imprimir el número de copias especificadas por nCopies. Para obtener más información, vea la descripción de la marca PD_USEDEVMODECOPIESANDCOLLATE .
hInstance
Tipo: HINSTANCE
Si la marca PD_ENABLEPRINTTEMPLATE o PD_ENABLESETUPTEMPLATE está establecida en el miembro Flags , hInstance es un identificador de la instancia de aplicación o módulo que contiene la plantilla de cuadro de diálogo denominada por el miembro lpPrintTemplateName o lpSetupTemplateName .
lCustData
Tipo: LPARAM
Datos definidos por la aplicación que el sistema pasa al procedimiento de enlace identificado por el miembro lpfnPrintHook o lpfnSetupHook . Cuando el sistema envía el mensaje WM_INITDIALOG al procedimiento de enlace, el parámetro lParam del mensaje es un puntero a la estructura PRINTDLG especificada cuando se creó el cuadro de diálogo. El procedimiento de enlace puede usar este puntero para obtener el valor lCustData .
lpfnPrintHook
Tipo: LPPRINTHOOKPROC
Puntero a un procedimiento de enlace PrintHookProc que puede procesar mensajes destinados al cuadro de diálogo Imprimir . Este miembro se omite a menos que la marca PD_ENABLEPRINTHOOK esté establecida en el miembro Flags .
lpfnSetupHook
Tipo: LPSETUPHOOKPROC
Puntero a un procedimiento de enlace SetupHookProc que puede procesar mensajes destinados al cuadro de diálogo Configurar impresión . Este miembro se omite a menos que la marca PD_ENABLESETUPHOOK esté establecida en el miembro Flags .
lpPrintTemplateName
Tipo: LPCTSTR
Nombre del recurso de plantilla del cuadro de diálogo en el módulo identificado por el miembro hInstance . Esta plantilla reemplaza la plantilla predeterminada del cuadro de diálogo Imprimir . Este miembro se omite a menos que la marca PD_ENABLEPRINTTEMPLATE esté establecida en el miembro Flags .
lpSetupTemplateName
Tipo: LPCTSTR
Nombre del recurso de plantilla del cuadro de diálogo en el módulo identificado por el miembro hInstance . Esta plantilla reemplaza la plantilla del cuadro de diálogo Configurar impresión predeterminada. Este miembro se omite a menos que la marca PD_ENABLESETUPTEMPLATE esté establecida en el miembro Flags .
hPrintTemplate
Tipo: HGLOBAL
Si la marca PD_ENABLEPRINTTEMPLATEHANDLE se establece en el miembro Flags , hPrintTemplate es un identificador de un objeto de memoria que contiene una plantilla de cuadro de diálogo. Esta plantilla reemplaza la plantilla predeterminada del cuadro de diálogo Imprimir .
hSetupTemplate
Tipo: HGLOBAL
Si la marca PD_ENABLESETUPTEMPLATEHANDLE se establece en el miembro Flags , hSetupTemplate es un identificador de un objeto de memoria que contiene una plantilla de cuadro de diálogo. Esta plantilla reemplaza la plantilla del cuadro de diálogo Configurar impresión predeterminada.
Comentarios
Si hDevMode y hDevNames son NULL, PrintDlg inicializa el cuadro de diálogo con la impresora predeterminada actual. Para inicializar el cuadro de diálogo para una impresora diferente, utilice el miembro wDeviceOffset de la estructura DEVNAMES para especificar el nombre de la impresora.
Tenga en cuenta que el miembro dmDeviceName de la estructura DEVMODE también especifica un nombre de impresora. Sin embargo, dmDeviceName está limitado a 32 caracteres y el nombre wDeviceOffset no lo es. Si los nombres wDeviceOffset y dmDeviceName no son los mismos, PrintDlg inicializa el cuadro de diálogo con la impresora especificada por wDeviceOffset.
Si se establece la marca PD_RETURNDEFAULT y hDevMode y hDevNames son NULL, PrintDlg usa los miembros hDevNames y hDevMode para devolver información sobre la impresora predeterminada actual sin mostrar el cuadro de diálogo.
Nota
El encabezado commdlg.h define PRINTDLG como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.
Requisitos
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Encabezado | commdlg.h (incluye Windows.h) |
Consulte también
Biblioteca de cuadros de diálogo comunes
Conceptual
Referencia