ID do artigo: 322710 - Última revisão: quinta-feira, 29 de março de 2007 - Revisão: 2.3

COMO: Aumentar e caixas de diálogo de impressão de controle do Visual Basic

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Recolher tudo

Sumário

Você pode usar o arquivo Vbprndlg.dll em vez da parte de caixa de diálogo Imprimir do controle CommonDialog do Visual Basic. Este arquivo expõe as propriedades e fornece funcionalidade que o controle CommonDialog não.

O controle CommonDialog no Visual Basic permite que a caixa de diálogo Imprimir a ser exibido, mas não concede acesso a muitas das propriedades que podem ser definidas na caixa de diálogo Imprimir e consumidas por objeto Printer . Devido a problemas de alinhamento com estruturas de (ou seja, definido pelo usuário tipos) quando as funções de interface (API) Win32 programação de aplicativo são feitas a partir do Visual Basic, você confiável não é possível obter informações adicionais, usando essas chamadas API. Para solucionar esse problema, este artigo fornece uma DLL que você pode usar em vez da parte de impressora do controle CommonDialog .



Baixar o controle

O seguinte arquivo está disponível para download no Centro de download da Microsoft:
Vbprndlg.exe (http://download.microsoft.com/download//vb60pro/utility/1.0/win98mexp/en-us/vbprndlg.exe)
Data de lançamento: Set-30-2002

Para obter informações adicionais sobre como baixar arquivos de suporte da Microsoft, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
119591  (http://support.microsoft.com/kb/119591/EN-US/ ) Como obter arquivos de suporte da Microsoft a partir de serviços online
Microsoft examinou esse arquivo em busca de vírus. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o arquivo foi publicado. O arquivo é armazenado em servidores com segurança avançada que ajudam a evitar qualquer alteração não autorizada no arquivo. O arquivo Vbprndlg.exe contém os seguintes arquivos:

Recolher esta tabelaExpandir esta tabela
Nome de arquivoTamanho
Vbprndlg.dll100,0 KB
Vbprndlg.Exp1.0 KB
Vbprndlg.lib1.72 KB
Vbprndlg.DEPBytes 118
Readme.txt10,9 KB


Instalar Vbprndlg.exe

  1. Extrair os arquivos para um local que não serão excluídos e que tenha um caminho simples. Esses tipos de arquivos normalmente são colocados no diretório System32 sob o Windows ou a pasta Winnt.
  2. Clique em Iniciar e, em seguida, clique em Executar .
  3. Digite o seguinte e, em seguida, clique em OK :
    RegSvr32 C:\Windows\System32\VBPrnDlg.dll
    Se certificar de que você usa o caminho completo real para a DLL como a segunda parte deste comando.

    Você recebe uma mensagem de que a DLL registrada com êxito.

Classe Printerdlg documentação

Essa DLL é um componente que é adicionado como uma referência a um aplicativo do Visual Basic. Depois de adicionar a DLL, você pode usá-lo no código para exibir a caixa de diálogo Imprimir e para recuperar as informações que o usuário seleciona. Esse comportamento é o mesmo que o comportamento da caixa de diálogo Imprimir no controle CommonDialog no Visual Basic.

Propriedades de caixa de diálogo

Para documentação sobre qualquer uma dessas propriedades, consulte a documentação para o controle CommonDialog . Printer.hDC é somente leitura, mas todas as seguintes propriedades, exceto aqueles que são marcadas com um asterisco diretamente mapeiam para a impressora de objeto quando você usa a seguinte sintaxe:
Printer.Copies = printDlg.Copies
				
  • cópias
  • orientação
  • ColorMode
  • DriverName
  • duplex
  • PaperBin
  • PaperSize
  • porta
  • PrintQuality
  • hDC
  • nome_da_impressora *
  • min *
  • máximo *
  • FromPage *
  • ToPage *
nome_da_impressora mapeia para DeviceName no objeto de impressora . As propriedades últimas quatro são marcadas com um asterisco (1) são usados para determinar se um subconjunto de páginas disponíveis deve ser impressas. Para habilitar a caixa de diálogo Imprimir parte para Selecionar páginas , máximo deve ser definido como um número maior que o mínimo . Se o mínimo é maior que Max , ocorrerá um erro quando a caixa de diálogo for exibida. Se o usuário seleciona um subconjunto, o objeto PrinterDlg certifica-se que está dentro dos limites do mínimo e máximo , e são retornado nas propriedades FromPage e ToPage . Essas propriedades não são mapeadas diretamente para o objeto de impressora , para que o programa que gera a caixa de diálogo e controla a impressão deve lidar com essas propriedades.

Propriedades e métodos de controle do diálogo

  • sinalizadores - este é o mesmo da propriedade Flags do controle CommonDialog . Ele controla alguns dos recursos da caixa de diálogo. Esse valor é definido usando "ou" com constantes diferentes em VBPrinterConstants estrutura. Por exemplo:
    printDlg.Flags = VBPrinterConstants.cdlPDDisablePrintToFile _
                         Or VBPrinterConstants.cdlPDNoPageNums
    					
    essas constantes são:
    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.
    
    					
    você pode usar a propriedade Flags para determinar se o usuário escolher um campo como Imprimir em arquivo . Para fazer isso, consulte para ver se o sinalizador cdlPDPrintToFile foi definido quando o controle retornou de exibir a caixa de diálogo.

  • CancelError - este é um sinalizador booleano que determina se um erro é retornado para o programa se o usuário clicar em Cancelar . Por padrão, isso é False, então um erro não ocorre se o usuário clicar em Cancelar . Quando isso é definido como True, número do erro 32755 (& H7FF3) ocorre quando o usuário clica em Cancelar . Você pode ajustar o registro esse erro para lidar com um caso em que o usuário cancela a caixa de diálogo.
  • ShowPrinter - este é o único método nesta classe. Chamar esse método exibe a caixa de diálogo. Isso aceita o identificador da janela de chamada como um parâmetro. Por exemplo, o método a seguir retorna um valor booleano:
    printDlg.ShowPrinter Me.hWnd
    						
    isso pode ser ignorado. O valor é True se o usuário clicar em Imprimir e FALSO caso contrário (ou seja, se o usuário clicar em Cancelar ).
Observação : em todos os exemplos, printDlg é uma instância da classe está contida nessa DLL. Ele é declarado usando o código a seguir:
Dim printDlg As PrinterDlg
Set printDlg = New PrinterDlg
				

Etapas para criar o exemplo

Para criar um aplicativo de exemplo que usará a DLL para determinar as preferências do usuário e, em seguida, gravá-los para a janela Verificação imediata, siga estas etapas:
  1. No Microsoft Visual Basic, crie um EXE padrão novo projeto. Por padrão, é criado o Form1.
  2. No menu Project , clique em referências .
  3. Selecione Microsoft VB impressora Dialog(PSS) e, em seguida, clique em OK .
  4. Adicione um controle CommandButton ao formulário. Por padrão, Command1 é criado.
  5. Clique duas vezes em Command1 .
  6. Cole o seguinte código no evento Command1_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. Pressione a tecla F5 para iniciar a depuração e iniciar o aplicativo. Clique em Command1 para abrir a caixa de diálogo Imprimir .
  8. Depois de retornar da caixa de diálogo Imprimir , procure na janela Depurar a saída que foi retornada.
Observação : se você quiser que um erro específico a ser gerado e manipulados quando o usuário clicar em Cancelar (semelhante ao comportamento que ocorre com o controle CommonDialog ), Descomente as linhas que prefixado com "' **".

Referências

Para obter informações adicionais sobre como usar a caixa de diálogo Imprimir no Visual Basic, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
173981  (http://support.microsoft.com/kb/173981/EN-US/ ) PROBLEMA: Diferenças de comportamento de diálogo de impressão em plataformas diferentes
Para obter informações adicionais sobre as configurações da impressora, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
190218  (http://support.microsoft.com/kb/190218/EN-US/ ) COMO: Recuperar configurações de um driver de impressora
194789  (http://support.microsoft.com/kb/194789/EN-US/ ) COMO: Determinar PaperBins disponíveis com DeviceCapabilities API

A informação contida neste artigo aplica-se a:
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
Palavras-chave: 
kbmt kbdownload kbcmndlgprint kbfile kbhowto kbhowtomaster kbsample KB322710 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 322710  (http://support.microsoft.com/kb/322710/en-us/ )