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 controlo a partir 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 | Reduzir tudo

Sumário

Pode utilizar o ficheiro Vbprndlg.dll em vez da parte de caixa de diálogo Imprimir do controlo do Visual Basic CommonDialog . Este ficheiro expõe propriedades e fornece funcionalidade que o controlo CommonDialog não.

O controlo CommonDialog no Visual Basic permite na caixa de diálogo Imprimir para ser apresentado, mas não lhe dá acesso a muitas das propriedades que podem ser definidas na caixa de diálogo Imprimir e consumidas pelo objecto de impressora . Devido a problemas de alinhamento com estruturas (ou seja, utilizador tipos) quando as funções interface (API) da programação de aplicação Win32 são efectuadas a partir do Visual Basic, eficazmente não é possível obter informações adicionais utilizando estas chamadas à API. Como solução, este artigo fornece uma DLL que pode utilizar em vez da parte de impressora do controlo CommonDialog .



Transferir o controlo

O ficheiro seguinte está disponível para transferência a partir do Centro de transferências da Microsoft:
Vbprndlg.exe (http://download.microsoft.com/download//vb60pro/utility/1.0/win98mexp/en-us/vbprndlg.exe)
Data de edição: 30 de Set-2002

Para obter informações adicionais sobre como transferir ficheiros de suporte da Microsoft, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
119591  (http://support.microsoft.com/kb/119591/EN-US/ ) Como obter ficheiros de suporte da Microsoft a partir de serviços on-line
Microsoft procedeu de vírus neste ficheiro. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o ficheiro foi publicado. O ficheiro é alojado em servidores com segurança avançada que o ajudam a impedir alterações não autorizadas ao ficheiro. O ficheiro Vbprndlg.exe contém os seguintes ficheiros:

Reduzir esta tabelaExpandir esta tabela
Nome de ficheiroTamanho
Vbprndlg.dll100.0 KB
Vbprndlg.Exp1.0 KB
Vbprndlg.lib1.72 KB
Vbprndlg.DEPBytes 118
Readme.txt10.9 KB


Instalar Vbprndlg.exe

  1. Extrai os ficheiros para uma localização que não serão eliminados e que tem um caminho simples. Estes tipos de ficheiros são normalmente colocados no directório System32 do Windows ou o directório Winnt.
  2. Clique em Iniciar e, em seguida, clique em Executar .
  3. Escreva o seguinte e, em seguida, clique em OK :
    RegSvr32 C:\Windows\System32\VBPrnDlg.dll
    Certifique-se que utiliza o actual caminho completo para a DLL como a segunda parte deste comando.

    Recebe uma mensagem que a DLL registada com êxito.

Classe Printerdlg documentação

Esta DLL é um componente COM que é adicionado como uma referência a uma aplicação do Visual Basic. Depois de adicionar a DLL, pode utilizá-la no código para apresentar a caixa de diálogo Imprimir e para obter as informações seleccionadas pelo utilizador. Este comportamento é o mesmo que o comportamento da caixa de diálogo Imprimir no controlo CommonDialog no Visual Basic.

Propriedades da caixa de diálogo

Para documentação sobre qualquer uma destas propriedades, consulte a documentação para o controlo CommonDialog . Printer.hDC é só de leitura, mas todas as propriedades seguintes excepto aqueles que estão marcados com um asterisco (*) directamente mapear para a impressora objecto quando utiliza a seguinte sintaxe:
Printer.Copies = printDlg.Copies
				
  • cópias
  • orientação
  • ColorMode
  • NomeControlador
  • frente e verso
  • PaperBin
  • PaperSize
  • porta
  • PrintQuality
  • hDC
  • NomeImpressora *
  • min *
  • máximo *
  • FromPage *
  • ToPage *
NomeImpressora mapeia para NomeDispositivo no objecto de impressora . As propriedades últimos quatro marcadas com um asterisco (*) são utilizados para determinar se um subconjunto das páginas disponíveis deve ser impresso. Para activar a parte da Seleccionar páginas da caixa de diálogo Imprimir , máximo deve ser definido para um número que é maior do que mínimo . Se for maior que máximo mínimo , ocorre um erro quando aparecer a caixa de diálogo. Se o utilizador seleccionar um subconjunto, o objecto PrinterDlg garante que está dentro dos limites da mínimo e máximo e é devolvido nas propriedades FromPage e ToPage . Estas propriedades não directamente mapear para o objecto de impressora , para que o programa que desencadeia a caixa de diálogo e controla a impressão deve processar estas propriedades.

Propriedades e métodos de controlo de diálogo

  • sinalizadores - isto é igual a propriedade Flags do controlo CommonDialog . Controla algumas das funcionalidades da caixa de diálogo. Este valor é definido utilizando "ou" com diferentes constantes em VBPrinterConstants estrutura. Por exemplo:
    printDlg.Flags = VBPrinterConstants.cdlPDDisablePrintToFile _
                         Or VBPrinterConstants.cdlPDNoPageNums
    					
    estas constantes estã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.
    
    					
    pode utilizar a propriedade Flags para determinar se o utilizador escolheu um campo como Imprimir para ficheiro . Para efectuar este procedimento, consulte Para ver se foi definido o sinalizador cdlPDPrintToFile quando o controlo tem de apresentar a caixa de diálogo.

  • CancelError - isto é um sinalizador booleano que determina se é devolvido um erro para o programa se o utilizador clica em ' Cancelar ' . Por predefinição, é FALSE, para que um erro não ocorre se o utilizador clica em ' Cancelar ' . Quando este é definido como TRUE, o número de erro 32755 (& H7FF3) ocorre quando o utilizador clica em Cancelar . Pode aplicar um véu este erro para processar um incidente no qual o utilizador cancela a caixa de diálogo.
  • ShowPrinter - este é o único método desta classe. Chamar este método apresenta a caixa de diálogo. Este aceita o identificador da janela de chamada como um parâmetro. Por exemplo, o seguinte método devolve um valor boleano:
    printDlg.ShowPrinter Me.hWnd
    						
    Isto pode ser ignorado. O valor é TRUE se o utilizador clica Imprimir e FALSO caso contrário (isto é, se o utilizador clica em ' Cancelar ' ).
Nota : Nestes exemplos, printDlg é uma instância de classe que está contida nesta DLL. Está declarado utilizando o seguinte código:
Dim printDlg As PrinterDlg
Set printDlg = New PrinterDlg
				

Passos para criar o exemplo

Para criar uma aplicação de exemplo que irá utilizar a DLL para determinar as preferências do utilizador e, em seguida, escreva-as para a janela de depuração, siga estes passos:
  1. No Microsoft Visual Basic, crie um EXE padrão novo projecto. Por predefinição, é criado o Form1.
  2. No menu projecto , clique em References .
  3. Seleccione Microsoft VB impressora Dialog(PSS) e, em seguida, clique em OK .
  4. Adicione um controlo CommandButton ao formulário. Por predefinição, é criado Command1 .
  5. Faça duplo clique 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. Prima a tecla F5 para iniciar a depuração e para iniciar a aplicação. Clique em Command1 para abrir a caixa de diálogo Imprimir .
  8. Depois de voltar a partir da caixa de diálogo Imprimir , observe a janela Depurar o resultado foi devolvido.
Nota : Se desejar que um erro específico seja aumentado e processadas quando o utilizador clica em ' Cancelar ' (semelhante ao comportamento que ocorre com o controlo CommonDialog ), uncomment as linhas que são o prefixo "' **".

Referências

Para obter informações adicionais sobre como utilizar a caixa de diálogo Imprimir no Visual Basic, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
173981  (http://support.microsoft.com/kb/173981/EN-US/ ) PROBLEMA: Comportamento de diferenças de caixa de diálogo Imprimir em plataformas diferentes
Para obter informações adicionais sobre as definições da impressora, clique os números de artigo existente abaixo para visualizar os artigos na base de dados de conhecimento da Microsoft:
190218  (http://support.microsoft.com/kb/190218/EN-US/ ) COMO: Obter definições de um controlador 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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/ )