Compartir a través de


Estructura PRINTDLGEXA (commdlg.h)

Contiene información que usa la función printDlgEx de para inicializar la hoja de propiedades print de . 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;

Miembros

lStructSize

Tipo: DWORD de

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 se puede NULL.

hDevMode

Tipo: HGLOBAL

Identificador de un objeto de memoria global móvil que contiene una estructura de DEVMODE. Si hDevMode no es NULL en la entrada, debe asignar un bloque de memoria extraíble para la estructura DEVMODE de e inicializar sus miembros. La función PrintDlgEx usa los datos de entrada para inicializar los controles en la hoja de propiedades. Cuando se devuelve PrintDlgEx, los miembros DEVMODE indican la entrada del usuario.

Si hDevMode es NULL en la entrada, PrintDlgEx asigna memoria para la estructura de 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 hDevMode y miembros de 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 de DEVNAMES. Si hDevNames no es NULL en la entrada, debe asignar un bloque de memoria extraíble para la estructura de DEVNAMES e inicializar sus miembros. La función PrintDlgEx usa los datos de entrada para inicializar los controles en la hoja de propiedades. Cuando PrintDlgEx devuelve, 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 a 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 hDevMode y miembros de 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. 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 API de PrintDlgw.

Flags

Tipo: DWORD de

Un conjunto de marcas de bits que puede usar para inicializar la hoja de propiedades de Imprimir. Cuando la función printDlgEx devuelve, establece estas marcas para indicar la entrada del usuario. Este miembro puede ser uno o varios de los siguientes valores.

Para asegurarse de que printDlg o printDlgEx devuelve los valores correctos en el dmCopies y miembros del DEVMODE estructura, establezca PD_RETURNDC = TRUE y PD_USEDEVMODECOPIESANDCOLLATE = TRUE. Al hacerlo, el miembro nCopies de la estructura PRINTDLG de 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.

A partir de Windows Vista, al llamar 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 del PRINTDLG estructura.

Al realizar llamadas a GDI, debe omitir el valor de nCopies, considere el valor como 1 y use el hDC devuelto para evitar imprimir copias duplicadas.

Valor Significado
PD_ALLPAGES
0x00000000
Marca predeterminada que indica que se selecciona inicialmente el botón de radio Todo. Esta marca se usa como marcador de posición para indicar que no se especifican las marcas PD_PAGENUMS, PD_SELECTIONy PD_CURRENTPAGE.
PD_COLLATE
0x00000010
Si se establece esta marca, se activa la casilla Interate.

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.

PD_CURRENTPAGE
0x00400000
Si se establece esta marca, se selecciona el botón de radio página actual. Si no se establece ninguna de las marcas PD_PAGENUMS, PD_SELECTIONo PD_CURRENTPAGE, se selecciona el botón de radio Todo.
PD_DISABLEPRINTTOFILE
0x00080000
Deshabilita la casilla Imprimir en archivo .
PD_ENABLEPRINTTEMPLATE
0x00004000
Indica que los miembros de hInstance y lpPrintTemplateName especifican un reemplazo para la plantilla de cuadro de diálogo predeterminada en la parte inferior de la página General de . 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.
PD_ENABLEPRINTTEMPLATEHANDLE
0x00010000
Indica que el miembro de 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 lpPrintTemplateName miembro si se especifica esta marca.
PD_EXCLUSIONFLAGS
0x01000000
Indica que el ExclusionFlags miembro 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 de General, las páginas especificadas por la aplicación y las páginas del controlador de impresora.
PD_HIDEPRINTTOFILE
0x00100000
Oculta la casilla Imprimir en archivo .
PD_NOCURRENTPAGE
0x00800000
Deshabilita el botón de radio página actual.
PD_NOPAGENUMS
0x00000008
Deshabilita el botón de radio Pages y los controles de edición asociados. Además, hace que la casilla intercalación aparezca en el cuadro de diálogo.
PD_NOSELECTION
0x00000004
Deshabilita el botón de radio Selección de .
PD_NOWARNING
0x00000080
Impide que se muestre el mensaje de advertencia cuando se produce un error.
PD_PAGENUMS
0x00000002
Si se establece esta marca, se selecciona el botón de radio Páginas. Si no se establece ninguna de las marcas PD_PAGENUMS, PD_SELECTIONo PD_CURRENTPAGE, se selecciona el botón de radio Todo. Si esta marca se establece cuando la función PrintDlgEx devuelve, el miembro lpPageRanges indica los intervalos de página especificados por el usuario.
PD_PRINTTOFILE
0x00000020
Si se establece esta marca, la casilla imprimir archivo está activada. Si se establece esta marca cuando PrintDlgEx, el desplazamiento indicado por el miembro wOutputOffset de la estructura DEVNAMES de contiene la cadena "FILE:". Al llamar a la función startDoc de 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.
PD_RETURNDC
0x00000100
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.
PD_RETURNDEFAULT
0x00000400
Si se establece esta marca, la función PrintDlgEx no muestra la hoja de propiedades. En su lugar, establece los miembros de hDevNames y hDevMode para controlar DEVNAMES y estructuras de DEVMODE inicializadas para la impresora predeterminada del sistema. Tanto hDevNames como hDevMode deben ser NULLo printDlgEx devuelve un error.
PD_RETURNIC
0x00000200
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_RETURNDC ni PD_RETURNIC, hDC no está definido en la salida.
PD_SELECTION
0x00000001
Si se establece esta marca, se selecciona el botón de radio Selección. Si no se establece ninguna de las marcas PD_PAGENUMS, PD_SELECTIONo PD_CURRENTPAGE, se selecciona el botón de radio Todo.
PD_USEDEVMODECOPIES
0x00040000
Igual que PD_USEDEVMODECOPIESANDCOLLATE.
PD_USEDEVMODECOPIESANDCOLLATE
0x00040000
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 nCopies miembro 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 del PRINTDLGEX indica el número de copias que el usuario quiere 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 Copia control de edición está deshabilitado. Del mismo modo, si se establece esta marca y el controlador de impresora no admite la intercalación, la casilla intercalación está deshabilitada.

Los dmCopies y dmCollate miembros del DEVMODE estructura contienen la información de copia y intercalación utilizada por el controlador de impresora. Si se establece esta marca y el controlador de impresora admite varias copias, el dmCopies miembro 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 dmCollate miembro de la estructura DEVMODE de indica si el usuario quiere intercalación. Si no se establece esta marca, el dmCopies miembro 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 dmCopies miembro del DEVMODE estructura 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 de .

PD_USELARGETEMPLATE
0x10000000
Obliga a la hoja de propiedades a usar una plantilla grande para la página general de . 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 de .

Flags2

Tipo: DWORD de

ExclusionFlags

Tipo: DWORD de

Conjunto de marcas de bits que pueden excluir elementos de las páginas de propiedades del controlador de impresora en la hoja de propiedades de 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 de General de o en una página definida por la aplicación en la hoja de propiedades Imprimir. Este miembro puede especificar la marca siguiente.

PD_EXCL_COPIESANDCOLLATE

Excluye los controles copia y collate de las páginas de propiedades del controlador de impresora en una hoja de propiedades de Imprimir. Esta marca siempre debe establecerse cuando la aplicación usa el predeterminado Copia y controles collate proporcionados por la parte inferior de la página General de de la hoja de propiedades Imprimir.

nPageRanges

Tipo: DWORD de

En la entrada, establezca este miembro en el número inicial de intervalos de página especificados en la matriz de lpPageRanges de . Cuando se devuelve la función printDlgEx , nPageRanges indica el número de intervalos de página especificados por el usuario almacenados en la matriz de lpPageRanges . Si se especifica la marca PD_NOPAGENUMS, este valor no es válido.

nMaxPageRanges

Tipo: DWORD de

Tamaño, en elementos de matriz, del búfer de 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 de edición de Pages. Cuando se devuelve la función PrintDlgEx, 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 de PD_NOPAGENUMS, lpPageRanges debe serNULL.

nMinPage

Tipo: DWORD de

Valor mínimo para los intervalos de páginas especificados en el control de edición de Pages. Si se especifica la marca PD_NOPAGENUMS, este valor no es válido.

nMaxPage

Tipo: DWORD de

Valor máximo de los intervalos de página especificados en el control de edición de Pages. Si se especifica la marca PD_NOPAGENUMS, este valor no es válido.

nCopies

Tipo: DWORD de

Contiene el número inicial de copias del control de edición copia de si hDevMode es NULL; De lo contrario, el dmCopies miembro del DEVMODE de contiene el valor inicial. Cuando 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 PD_USEDEVMODECOPIESANDCOLLATE está establecida en el miembro Flags, nCopies siempre es 1 a cambio 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 PD_ENABLEPRINTTEMPLATE está establecida en el miembro flags de , hInstance es un identificador de 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 está establecida 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 de , hInstance debe ser NULL.

lpPrintTemplateName

Tipo: LPCTSTR de

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 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 de 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 de

Número de identificadores de página de propiedades de la matriz lphPropertyPages.

lphPropertyPages

Tipo: HPROPSHEETPAGE*

Contiene una matriz de identificadores de página de propiedades para agregar a la hoja de propiedades Imprimir. Las páginas de propiedades adicionales siguen la página General. Use la función createPropertySheetPage de para crear estas páginas adicionales. Cuando se devuelve la función PrintDlgEx, se han destruido todos los identificadores HPROPSHEETPAGE en la matriz lphPropertyPages. Si nPropertyPages es cero, lphPropertyPages debe ser null.

nStartPage

Tipo: DWORD de

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 la coherencia, se recomienda que la hoja de propiedades siempre se inicie en la página General.

dwResultAction

Tipo: DWORD de

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 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, use el wDeviceOffset miembro del ESTRUCTURA DEVNAMES para especificar el nombre de la impresora.

Tenga en cuenta que el miembro dmDeviceName del DEVMODE estructura también especifica un nombre de impresora. Sin embargo, dmDeviceName está limitado a 32 caracteres y el nombre de wDeviceOffset no. Si los nombres de wDeviceOffset y dmDevice Name no son los mismos, PrintDlgEx inicializa la hoja de propiedades con la impresora especificada por wDeviceOffset.

Si se establece la marca de PD_RETURNDEFAULT y hDevMode y hDevNames son NULL, PrintDlgEx usa el hDevNames y hDevMode miembros 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 de de de DEVMODE y DE V MODE que especificó en la estructura printDLGEX de no siempre contengan datos actuales. Por este motivo, las páginas de propiedades específicas de la aplicación, así como IPrintDialogCallback rutinas para 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 Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
encabezado de commdlg.h (incluya Windows.h)

Consulte también

biblioteca de cuadros de diálogo común de

conceptual de

DEVMODE

DEVNAMES

IPrintDialogCallback

IPrintDialogServices

PrintDlgEx

de referencia de