Help and Support
 

powered byLive Search

CÓMO PARA: Raise y control imprimen cuadros de diálogo desde Visual Basic

Id. de artículo:322710
Última revisión:jueves, 29 de marzo de 2007
Versión:2.3
En esta página

Resumen

Puede utilizar el archivo Vbprndlg.dll en vez de la parte Print de cuadros de diálogo del control CommonDialog de Visual Basic. Este archivo expone propiedades y proporciona funcionalidad que no proporciona el control CommonDialog.

El control CommonDialog en Visual Basic permite que se muestre el cuadro de diálogo Imprimir pero no proporciona acceso a muchas de las propiedades que se pueden establecer en el cuadro de diálogo Propiedades Print y que pueden ser consumidos por el objeto Printer. Cuando se realiza las funciones de programación de aplicación de interfaz (API) de Win32 desde Visual Basic, no puede obtener información adicional de forma confiable debido a problemas de alineación con estructuras (es decir tipos definidos por el usuario), utilizando estas llamadas a API. Como una solución, este Este artículo proporciona un DLL que puede utilizar en vez de la parte Printer del control CommonDialog.



Volver al principio

Descargue el control

El archivo siguiente está disponible para descargarlo del Centro de descarga de Microsoft
Vbprndlg.exe (http://download.microsoft.com/download//vb60pro/utility/1.0/win98mexp/en-us/vbprndlg.exe)
Fecha de lanzamiento: Sep-30-2002

Para información adicional acerca de cómo descargar archivos de soporte técnico de Microsoft, haga clic en el número de artículo siguiente para ver el artículo en el Microsoft Knowledge Base:
119591 (http://support.microsoft.com/kb/119591/EN-US/) Cómo obtener Archivos de soporte técnico de Microsoft desde los servicios en líne
Microsoft exploró este archivo en busca de virus Con el software de detección de virus más reciente disponible en la fecha de publicación Asimismo, el archivo se almacenó en servidores seguros que ayudan a impedir la realización de cambios no autorizados El archivo Vbprndlg.exe contiene los archivos siguientes:

Nombre de archivoTamaño
Vbprndlg.dll100,0 KB
Vbprndlg.exp1,0 KB
Vbprndlg.lib1,72 KB
Vbprndlg.dep118 bytes
Readme.txt10,9 KB


Volver al principio

Instale vbprndlg.exe

1. Extrae los archivos en una ubicación que no se eliminará y aquél tiene una ruta simple. Estos tipo de archivo normalmente se colocan en el directorio System32 en el Windows o en el directorio Winnt.
2.Haga clic en Inicio y a continuación, haga clic en Ejecutar.
3.Escribe lo siguiente y a continuación, hace clic en Aceptar:
C:\Windows\System32\VBPrnDlg.dll RegSvr32
Asegúrese de que utiliza la Ruta completa real al DLL como la segunda parte de este comando.

Recibe un mensaje de que el DLL se registró correctamente.

Volver al principio

Documentación de clase Printerdlg

Este DLL es un componente COM que se agrega como una referencia a una aplicación de Visual Basic. Después de agregar el DLL, lo puede utilizar en código para mostrar el cuadro de diálogo Imprimir y recuperar la información que selecciona el usuario. Este comportamiento es igual como el comportamiento del cuadro de diálogo Imprimir en el control CommonDialog en Visual Basic.

Volver al principio

Propiedades de cuadros de diálogo

Para documentación acerca de cualquiera de estas propiedades, consulte la documentación para el control CommonDialog. Printer.hdc es de sólo lectura pero todas las propiedades siguientes excepto aquéllos que se marcan directamente con un asterisco (*) se asignan en el objeto Printer cuando utiliza la sintaxis siguiente:
Printer.Copies = printDlg.Copies
				
?Copias
?Orientació
?ColorMode
?DriverName
?Dúplex
?PaperBin
?PaperSize
?Puert
?PrintQuality
?hDC
?NombreImpresora *
?Min *
?Máx *
?FromPage *
?ToPage *
NombreImpresora se asigna a DeviceName en el objeto Printer. Las últimas cuatro propiedades que se marcan con un asterisco (*) se usan para determinar si se debe ir a imprimir un subconjunto de las páginas disponibles. Para habilitar la parte Select Pages del cuadro de diálogo Imprimir, Máx se debe establecer en un número aquél es mayor que Mín. Si Mín es a uno de Max mayor, se produce un error cuando el cuadro de diálogo aparece. Si el usuario selecciona un subconjunto, el objeto PrinterDlg se asegura de que está en los límites de Mín y de Máx y de que se devuelve en las propiedades FromPage y ToPage. Estas propiedades no se asignan directamente en el objeto Printer conque debe controlar estas propiedades el programa que provoca el cuadro de diálogo y que controla la impresión.

Volver al principio

Métodos de Control de diálogo y propiedades

?Flags Esto coincide como la propiedad Flags del control CommonDialog. Controla algunas de las características del cuadro de diálogo. Utiliza para establecerse o con constantes distintas en el VBPrinterConstants, este valor se estructura. Por ejemplo
printDlg.Flags = VBPrinterConstants.cdlPDDisablePrintToFile _
                     Or VBPrinterConstants.cdlPDNoPageNums
					
Estas constantes son:
Constant                  Value       Description
---------------------------------------------------------------------------
cdlPDAllPages             &H0         Returns or sets the state of the All 
                                      Pages option button.

cdlPDCollate              &H10        Returns or sets the state of the  
                                      Collate check box.

cdlPDDisablePrintToFile   &H80000     Disables the Print To File check box.

cdlPDHelpButton           &H800       Causes the dialog box to display the 
                                      Help button.

cdlPDHidePrintToFile      &H100000    Hides the Print To File check box.

cdlPDNoPageNums           &H8         Disables the Pages option button and 
                                      the associated edit control.

cdlPDNoSelection          &H4         Disables the Selection option button.

cdlPDNoWarning            &H80        Prevents a warning message from being
                                      displayed when there is no default 
                                      printer.

cdlPDPageNums             &H2         Returns or sets the state of the 
                                      Pages option button.

cdlPDPrintSetup           &H40        Causes the system to display the 
                                      Print Setup dialog box instead of 
                                      the Print dialog box.

cdlPDPrintToFile          &H20        Returns or sets the state of the 
                                      Print To File check box.

cdlPDReturnDC             &H100       Returns a device context for the 
                                      printer selection made in the dialog 
                                      box. The device context is returned 
                                      in the hDC property of the dialog 
                                      box.

cdlPDReturnDefault        &H400       Returns the default printer name.

cdlPDReturnIC             &H200       Returns an information context for 
                                      the printer selection made in the 
                                      dialog box. An information context 
                                      provides a fast way to get 
                                      information about the device without 
                                      creating a device context. The 
                                      information context is returned in 
                                      the hDC property of the dialog box.

cdlPDSelection            &H1         Returns or sets the state of the
                                      Selection option button. If neither 
                                      cdlPDPageNums nor cdlPDSelection is 
                                      specified, the All option button is 
                                      in the selected state.

cdlPDUseDevModeCopies     &H40000     If a printer driver does not support
                                      multiple copies, setting this flag 
                                      disables the Number of Copies spinner
                                      control in the Print dialog box. If a
                                      driver does support multiple copies, 
                                      setting this flag indicates that the 
                                      dialog box stores the requested 
                                      number of copies in the Copies 
                                      property.

					
Puede utilizar la propiedad Flags para determinar si el usuario eligió un campo tal como Imprimir en un archivo. Para ello, busque si el indicador cdlPDPrintToFile está si ha sido establecido cuando el control ha vuelto de mostrar el cuadro de diálogo.

?CancelError Esto es un indicador Boolean que determina si se devuelve un error al programa si el usuario hace clic en Cancelar. De forma predeterminada, se encuentra esto Falso conque un error no ocurre si el usuario hace clic en Cancelar. Cuando se establece esto en True, el número de error 32.755 (y H7FF3) tienen lugar cuando el usuario hace clic en Cancelar. Puede interceptar este error para controlar un caso en el que cancela el usuario el cuadro de diálogo.
?ShowPrinter Esto es el método único de esta clase. Llamar a este método muestra el cuadro de diálogo. Esto acepta el identificador de la ventana de llamada como un parámetro. Por ejemplo, el método devuelve un valor Boolean:
printDlg.ShowPrinter Me.hWnd
						
Se puede omitir esto. El valor es True si el usuario hace clic de lo contrario en Imprimir y en Falso (si es decir, el usuario hace clic en Cancelar).
NOTA: En todos estos ejemplos, printDlg es una instancia de la clase contenida en este DLL. Se declara utilizando el código siguiente:
Dim printDlg As PrinterDlg
Set printDlg = New PrinterDlg
				

Volver al principio

Pasos para crear el ejempl

Para crear una aplicación de ejemplo que utilizará el DLL para determinar las preferencias del usuario y escribirlos a continuación en la ventana Depuración, siga estos pasos:
1. En Microsoft Visual Basic, cree un proyecto nuevo EXE estándar. De forma predeterminada, se crea Form1
2.En el menú <B>Project</B>, haga clic en <B>References</B>
3. Seleccione Microsoft VB Printer Dialog(PSS) y a continuación, haga clic en Aceptar.
4.Agregue un control CommandButton al formulario. De forma predeterminada, se crea Command1.
5.Haga doble clic en Command1.
6.Pegue el código siguiente en el evento Comando1 Click:
Dim printDlg As PrinterDlg
Set printDlg = New PrinterDlg
' Set the starting information for the dialog box based on the current
' printer settings.
printDlg.PrinterName = Printer.DeviceName
printDlg.DriverName = Printer.DriverName
printDlg.Port = Printer.Port

' Set the default PaperBin so that a valid value is returned even
' in the Cancel case.
printDlg.PaperBin = Printer.PaperBin

' Set the flags for the PrinterDlg object using the same flags as in the
' common dialog control. The structure starts with VBPrinterConstants.
printDlg.Flags = VBPrinterConstants.cdlPDNoSelection _
                 Or VBPrinterConstants.cdlPDNoPageNums _
                 Or VBPrinterConstants.cdlPDReturnDC
Printer.TrackDefault = False

' When CancelError is set to True the ShowPrinterDlg will return error
' 32755. You can handle the error to know when the Cancel button was
' clicked. Enable this by uncommenting the lines prefixed with "'**".
'**printDlg.CancelError = True

' Add error handling for Cancel.
'**On Error GoTo Cancel
If Not printDlg.ShowPrinter(Me.hWnd) Then
    Debug.Print "Cancel Selected"
    Exit Sub
End If

'Turn off Error Handling for Cancel.
'**On Error GoTo 0
Dim NewPrinterName As String
Dim objPrinter As Printer
Dim strsetting As String

' Locate the printer that the user selected in the Printers collection.
NewPrinterName = UCase$(printDlg.PrinterName)
If Printer.DeviceName <> NewPrinterName Then
    For Each objPrinter In Printers
       If UCase$(objPrinter.DeviceName) = NewPrinterName Then
            Set Printer = objPrinter
       End If
    Next
End If

' Copy user input from the dialog box to the properties of the selected printer.
Printer.Copies = printDlg.Copies
Printer.Orientation = printDlg.Orientation
Printer.ColorMode = printDlg.ColorMode
Printer.Duplex = printDlg.Duplex
Printer.PaperBin = printDlg.PaperBin
Printer.PaperSize = printDlg.PaperSize
Printer.PrintQuality = printDlg.PrintQuality

' Display the results in the immediate (Debug) window.
' NOTE: Supported values for PaperBin and Size are printer specific. Some
' common defaults are defined in the Win32 SDK in MSDN and in Visual Basic.
' Print quality is the number of dots per inch.
With Printer
    Debug.Print .DeviceName
    If .Orientation = 1 Then
        strsetting = "Portrait. "
    Else
        strsetting = "Landscape. "
    End If
    Debug.Print "Copies = " & .Copies, "Orientation = " & _
       strsetting
    If .ColorMode = 1 Then
        strsetting = "Black and White. "
    Else
        strsetting = "Color. "
    End If
    Debug.Print "ColorMode = " & strsetting
    If .Duplex = 1 Then
        strsetting = "None. "
    ElseIf .Duplex = 2 Then
        strsetting = "Horizontal/Long Edge. "
    ElseIf .Duplex = 3 Then
        strsetting = "Vertical/Short Edge. "
    Else
        strsetting = "Unknown. "
    End If
    Debug.Print "Duplex = " & strsetting
    Debug.Print "PaperBin = " & .PaperBin
    Debug.Print "PaperSize = " & .PaperSize
    Debug.Print "PrintQuality = " & .PrintQuality
    If (printDlg.Flags And VBPrinterConstants.cdlPDPrintToFile) = _
       VBPrinterConstants.cdlPDPrintToFile Then
         Debug.Print "Print to File Selected"
    Else
         Debug.Print "Print to File Not Selected"
    End If
    Debug.Print "hDC = " & printDlg.hDC
End With
Exit Sub
'**Cancel:
'**If Err.Number = 32755 Then
'**    Debug.Print "Cancel Selected"
'**Else
'**    Debug.Print "A nonCancel Error Occured - "; Err.Number
'**End If
					
7. Presione la tecla F5 para iniciar al realizar la depuración e iniciar la aplicación. Haga clic en Command1 para abrir el cuadro de diálogo Imprimir.
8. Cuando se a usted devuelve desde el cuadro de diálogo Imprimir, busque en la ventana Depuración en el resultado que se devolvió.
NOTA: Si desea un error específico generado y controlado cuando el usuario hace clic en Cancelar (similar al comportamiento que se produce en el control CommonDialog), las líneas que hacen que se prefijan quitan el comentario.

Volver al principio

Referencias

Para información adicional sobre la utilización del cuadro de diálogo Imprimir en Visual Basic, haga clic en el número de artículo siguiente para ver el artículo en el Microsoft Knowledge Base:
173981 (http://support.microsoft.com/kb/173981/EN-US/) PRB: Diferencias de comportamiento de cuadro de diálogo de impresión en plataformas distintas
Para información adicional sobre configuración de impresora, haga clic en los números siguientes de artículo para ver los artículos en el Microsoft Knowledge Base:
190218 (http://support.microsoft.com/kb/190218/EN-US/) HOWTO: Recupere configuraciones de un controlador de impresora
194789 (http://support.microsoft.com/kb/194789/EN-US/) HOWTO: Determine PaperBins disponible con API de DeviceCapabilities

Volver al principio


La información de este artículo se refiere a:
?Microsoft Visual Basic 5.0 Enterprise Edition
?Microsoft Visual Basic 6.0 Enterprise Edition
?Microsoft Visual Basic 5.0 Professional Edition
?Microsoft Visual Basic 6.0 Professional Edition

Volver al principio

Palabras clave: 
kbdownload kbcmndlgprint kbfile kbhowto kbhowtomaster kbsample KB322710 KbMtes kbmt

Volver al principio

Traducción automáticaAVISO: Gracias por utilizar el servicio de Traducción Automática. Este artículo ha sido traducido por un sistema informático sin ayuda humana (Machine Translation). Microsoft ofrece estos artículos a los usuarios que no comprendan el inglés, exclusivamente, con el fin de que puedan entenderlos más fácilmente. Microsoft no se hace responsable de la calidad lingüística de las traducciones ni de la calidad técnica de los contenidos de los artículos así como tampoco de cualesquiera problemas, directos o indirectos, que pudieran surgir como consecuencia de su utilización por los lectores.
Haga clic aquí para ver el artículo original (en inglés): 322710 (http://support.microsoft.com/kb/322710/en-us/)

Volver al principio

Seleccione idioma

 

Other Support Options

  • Need More Help?
    Contact a Support professional by Email, Online or Phone.
  • Customer Service
    For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more.
  • Newsgroups
    Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.