Estructura PRINTDLGEXA (commdlg.h)
Contiene información que la función PrintDlgEx usa para inicializar la hoja de propiedades Print. Una vez que el usuario cierra la hoja de propiedades, el sistema usa esta estructura para devolver información sobre las selecciones del usuario.
Sintaxis
typedef struct tagPDEXA {
DWORD lStructSize;
HWND hwndOwner;
HGLOBAL hDevMode;
HGLOBAL hDevNames;
HDC hDC;
DWORD Flags;
DWORD Flags2;
DWORD ExclusionFlags;
DWORD nPageRanges;
DWORD nMaxPageRanges;
LPPRINTPAGERANGE lpPageRanges;
DWORD nMinPage;
DWORD nMaxPage;
DWORD nCopies;
HINSTANCE hInstance;
LPCSTR lpPrintTemplateName;
LPUNKNOWN lpCallback;
DWORD nPropertyPages;
HPROPSHEETPAGE *lphPropertyPages;
DWORD nStartPage;
DWORD dwResultAction;
} PRINTDLGEXA, *LPPRINTDLGEXA;
Members
lStructSize
Tipo: DWORD
Tamaño de la estructura, en bytes.
hwndOwner
Tipo: HWND
Identificador de la ventana que posee la hoja de propiedades. Este miembro debe ser un identificador de ventana válido; no puede ser NULL.
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 extraíble para la estructura DEVMODE e inicializar sus miembros. La función PrintDlgEx usa los datos de entrada para inicializar los controles de la hoja de propiedades. Cuando se devuelve PrintDlgEx , los miembros de DEVMODE indican la entrada del usuario.
Si hDevMode es NULL en la entrada, PrintDlgEx asigna memoria para la estructura DEVMODE , 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.
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 PrintDlgEx usa los datos de entrada para inicializar los controles de la hoja de propiedades. Cuando se devuelve PrintDlgEx , 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 PrintDlgEx 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, dependiendo 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. Si hDC no es NULL, debe llamar a DeleteDC para liberar el objeto GDI después de que ya no lo necesite; de lo contrario, perderá objetos GDI cada vez que llame a las API printDlgw .
Flags
Tipo: DWORD
Un conjunto de marcas de bits que puede usar para inicializar la hoja de propiedades Print . Cuando la función PrintDlgEx devuelve, establece estas marcas para indicar la entrada del usuario. Este miembro puede ser uno o varios de los valores siguientes.
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 devuelven 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.
A partir de Windows Vista, 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, considerar el valor como 1 y usar el hDC devuelto para evitar imprimir copias duplicadas.
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 de PD_PAGENUMS, PD_SELECTION y PD_CURRENTPAGE . |
|
Si se establece esta marca, la casilla Intercalación está activada.
Si esta marca se establece cuando la función PrintDlgEx devuelve, la aplicación debe simular la intercalación de varias copias. Para obtener más información, consulte la descripción de la marca PD_USEDEVMODECOPIESANDCOLLATE . Consulte PD_NOPAGENUMS. |
|
Si se establece esta marca, se selecciona el botón de radio Página actual . Si no se establece ninguna de las marcas de PD_PAGENUMS, PD_SELECTION o PD_CURRENTPAGE , se selecciona el botón de radio Todo . |
|
Deshabilita la casilla Imprimir en archivo . |
|
Indica que los miembros hInstance y lpPrintTemplateName especifican un reemplazo para la plantilla de cuadro de diálogo predeterminada en la parte inferior de la página General . La plantilla predeterminada contiene controles similares a los del cuadro de diálogo Imprimir . El sistema usa la plantilla especificada para crear una ventana que sea un elemento secundario de la página General . |
|
Indica que el miembro hInstance identifica un bloque de datos que contiene una plantilla de cuadro de diálogo precargada. Esta plantilla reemplaza la plantilla de cuadro de diálogo predeterminada en la parte inferior de la página General . El sistema usa la plantilla especificada para crear una ventana que sea un elemento secundario de la página General . El sistema omite el miembro lpPrintTemplateName si se especifica esta marca. |
|
Indica que el miembro ExclusionFlags identifica los elementos que se excluirán de las páginas de propiedades del controlador de impresora. Si no se establece esta marca, los elementos se excluirán de forma predeterminada de las páginas de propiedades del controlador de impresora. Las exclusiones impiden la duplicación de elementos entre la página General , las páginas especificadas por la aplicación y las páginas del controlador de impresora. |
|
Oculta la casilla Imprimir en archivo . |
|
Deshabilita el botón de radio Página actual . |
|
Deshabilita el botón de radio Pages y los controles de edición asociados. Además, hace que la casilla Collate aparezca en el cuadro de diálogo. |
|
Deshabilita el botón de radio Selección . |
|
Evita que se muestre el mensaje de advertencia cuando se produce un error. |
|
Si se establece esta marca, se selecciona el botón de radio Páginas . Si no se establece ninguna de las marcas de PD_PAGENUMS, PD_SELECTION o PD_CURRENTPAGE , se selecciona el botón de radio Todo . Si se establece esta marca cuando devuelve la función PrintDlgEx , el miembro lpPageRanges indica los intervalos de página especificados por el usuario. |
|
Si se establece esta marca, la casilla Imprimir en archivo está activada. Si esta marca se establece cuando PrintDlgEx devuelve, 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 . Si se especifica esta cadena, el subsistema de impresión consultará al usuario el nombre del archivo de salida. |
|
Hace que PrintDlgEx devuelva un contexto de dispositivo que coincida con las selecciones realizadas por el usuario en la hoja de propiedades. El contexto del dispositivo se devuelve en hDC. |
|
Si se establece esta marca, la función PrintDlgEx no muestra la hoja de propiedades. En su lugar, establece los miembros hDevNames y hDevMode para controlar las estructuras DEVNAMES y DEVMODE que se inicializan para la impresora predeterminada del sistema. Tanto hDevNames como hDevMode deben ser NULL o PrintDlgEx devuelve un error. |
|
De forma similar a la marca de 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_RETURNDC ni 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 ninguna de las marcas de PD_PAGENUMS, PD_SELECTION o PD_CURRENTPAGE , se selecciona el botón de radio Todo . |
|
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 PRINTDLGEX 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 PRINTDLGEX indica el número de copias que el usuario desea imprimir y la marca PD_COLLATE en el 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 van a imprimir intercaladas. Si se establece esta marca y el controlador de impresora no admite varias copias, el control Edición de copias está deshabilitado. Del mismo modo, si se establece esta marca y el controlador de impresora no admite 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. En versiones de Windows anteriores a Windows Vista, si la aplicación que realiza la llamada no establece esta marca y el miembro dmCopies de la estructura DEVMODE es mayor que 1, use ese valor para el número de copias; De lo contrario, use el valor del miembro nCopies de la estructura PRINTDLGEX . |
|
Obliga a la hoja de propiedades a usar una plantilla grande para la página General . La plantilla más grande proporciona más espacio para las aplicaciones que especifican una plantilla personalizada para la parte inferior de la página General . |
Flags2
Tipo: DWORD
ExclusionFlags
Tipo: DWORD
Conjunto de marcas de bits que pueden excluir elementos de las páginas de propiedades del controlador de impresora en la hoja de propiedades Imprimir . Este valor solo se usa si la marca PD_EXCLUSIONFLAGS está establecida en el miembro Flags . Las marcas de exclusión solo se deben usar si el elemento que se va a excluir se incluirá en la página General o en una página definida por la aplicación en la hoja de propiedades Print . Este miembro puede especificar la marca siguiente.
PD_EXCL_COPIESANDCOLLATE
Excluye los controles Copies y Collate de las páginas de propiedades del controlador de impresora en una hoja de propiedades Print . Esta marca siempre debe establecerse cuando la aplicación usa los controles Copia y Intercalación predeterminados proporcionados por la parte inferior de la página General de la hoja de propiedades Imprimir .
nPageRanges
Tipo: DWORD
En la entrada, establezca este miembro en el número inicial de intervalos de página especificados en la matriz lpPageRanges . Cuando la función PrintDlgEx devuelve, nPageRanges indica el número de intervalos de páginas especificados por el usuario almacenados en la matriz lpPageRanges . Si se especifica la marca PD_NOPAGENUMS , este valor no es válido.
nMaxPageRanges
Tipo: DWORD
Tamaño, en elementos de matriz, del búfer lpPageRanges . Este valor indica el número máximo de intervalos de páginas que se pueden almacenar en la matriz. Si se especifica la marca PD_NOPAGENUMS , este valor no es válido. Si no se especifica la marca PD_NOPAGENUMS , este valor debe ser mayor que cero.
lpPageRanges
Tipo: LPPRINTPAGERANGE
Puntero a un búfer que contiene una matriz de estructuras PRINTPAGERANGE . En la entrada, la matriz contiene los intervalos de página iniciales que se van a mostrar en el control Edición de páginas . Cuando la función PrintDlgEx devuelve, la matriz contiene los intervalos de página especificados por el usuario. Si se especifica la marca PD_NOPAGENUMS , este valor no es válido. Si no se especifica la marca PD_NOPAGENUMS , lpPageRanges debe ser distinto de NULL.
nMinPage
Tipo: DWORD
Valor mínimo para los intervalos de página especificados en el control De edición de páginas . Si se especifica la marca PD_NOPAGENUMS , este valor no es válido.
nMaxPage
Tipo: DWORD
Valor máximo de los intervalos de página especificados en el control De edición de páginas . Si se especifica la marca PD_NOPAGENUMS , este valor no es válido.
nCopies
Tipo: DWORD
Contiene el 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 se devuelve PrintDlgEx , nCopies contiene el número real de copias que debe imprimir la aplicación. Este valor depende de si la aplicación o el controlador de impresora son responsables de imprimir varias copias. Si la marca de 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, consulte la descripción de la marca PD_USEDEVMODECOPIESANDCOLLATE .
hInstance
Tipo: HINSTANCE
Si la marca de PD_ENABLEPRINTTEMPLATE se establece en el miembro Flags , hInstance es un identificador para la aplicación o la instancia de módulo que contiene la plantilla de cuadro de diálogo denominada por el miembro lpPrintTemplateName . Si la marca PD_ENABLEPRINTTEMPLATEHANDLE se establece en el miembro Flags , hInstance es un identificador de un objeto de memoria que contiene una plantilla de cuadro de diálogo. Si ninguna de las marcas de plantilla está establecida en el miembro Flags , hInstance debe ser NULL.
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 de cuadro de diálogo predeterminada en la parte inferior de la página General . La plantilla predeterminada contiene controles similares a los del cuadro de diálogo Imprimir . Este miembro se omite a menos que la marca de PD_ENABLEPRINTTEMPLATE esté establecida en el miembro Flags .
lpCallback
Tipo: LPUNKNOWN
Puntero a un objeto de devolución de llamada definido por la aplicación.
El objeto debe contener la clase IPrintDialogCallback para recibir mensajes para el cuadro de diálogo secundario en la parte inferior de la página General .
El objeto de devolución de llamada también debe contener la clase IObjectWithSite para recibir un puntero a la interfaz IPrintDialogServices . La función PrintDlgEx llama a IUnknown::QueryInterface en el objeto de devolución de llamada para IID_IPrintDialogCallback y IID_IObjectWithSite para determinar qué interfaces se admiten.
Si no desea recuperar ninguna de las informaciones de devolución de llamada, establezca lpCallback en NULL.
nPropertyPages
Tipo: DWORD
Número de identificadores de página de propiedades en la matriz lphPropertyPages .
lphPropertyPages
Tipo: HPROPSHEETPAGE*
Contiene una matriz de identificadores de página de propiedades que se van a agregar a la hoja de propiedades Print . Las páginas de propiedades adicionales siguen la página General . Use la función CreatePropertySheetPage para crear estas páginas adicionales. Cuando se devuelve la función PrintDlgEx , se han destruido todos los identificadores HPROPSHEETPAGE de la matriz lphPropertyPages . Si nPropertyPages es cero, lphPropertyPages debe ser NULL.
nStartPage
Tipo: DWORD
Página de propiedades que se muestra inicialmente. Para mostrar la página General , especifique START_PAGE_GENERAL. De lo contrario, especifique el índice de base cero de una página de propiedades de la matriz especificada en el miembro lphPropertyPages . Para mantener la coherencia, se recomienda que la hoja de propiedades siempre se inicie en la página General .
dwResultAction
Tipo: DWORD
En la entrada, establezca este miembro en cero. Si la función PrintDlgEx devuelve S_OK, dwResultAction contiene el resultado del cuadro de diálogo. Si PrintDlgEx devuelve un error, se debe omitir este miembro. El miembro dwResultAction puede ser uno de los valores siguientes.
PD_RESULT_APPLY
El usuario ha clic en el botón Aplicar y, después, ha clic en el botón Cancelar . Esto indica que el usuario quiere aplicar los cambios realizados en la hoja de propiedades, pero aún no desea imprimir. La estructura PRINTDLGEX contiene la información especificada por el usuario en el momento en que se hizo clic en el botón Aplicar .
PD_RESULT_CANCEL
El usuario ha clic en el botón Cancelar . La información de la estructura PRINTDLGEX no cambia.
PD_RESULT_PRINT
El usuario ha clic en el botón Imprimir . La estructura PRINTDLGEX contiene la información especificada por el usuario.
Observaciones
Si hDevMode y hDevNames son NULL, PrintDlgEx inicializa la hoja de propiedades con la impresora predeterminada actual. Para inicializar la hoja de propiedades de 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, PrintDlgEx inicializa la hoja de propiedades con la impresora especificada por wDeviceOffset.
Si se establece la marca PD_RETURNDEFAULT y hDevMode y hDevNames son NULL, PrintDlgEx usa los miembros hDevNames y hDevMode para devolver información sobre la impresora predeterminada actual sin mostrar el cuadro de diálogo.
Durante la ejecución de PrintDlgEx, es posible que las estructuras DEVMODE y DEVNAMES especificadas en la estructura PRINTDLGEX no siempre contengan datos actuales. Por este motivo, las páginas de propiedades específicas de la aplicación, así como las rutinas IPrintDialogCallback de la página inicial deben usar la interfaz IPrintDialogServices para recuperar información sobre el estado de la impresora actual.
Nota:
El encabezado commdlg.h define PRINTDLGEX 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