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 ficheiro | Tamanho |
|---|
| Vbprndlg.dll | 100.0 KB |
| Vbprndlg.Exp | 1.0 KB |
| Vbprndlg.lib | 1.72 KB |
| Vbprndlg.DEP | Bytes 118 |
| Readme.txt | 10.9 KB |
Instalar Vbprndlg.exe
- 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.
- Clique em Iniciar e, em seguida, clique em Executar .
- 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:
- No Microsoft Visual Basic, crie um EXE padrão novo projecto. Por predefinição, é criado o Form1.
- No menu projecto , clique em References .
- Seleccione Microsoft VB impressora Dialog(PSS) e, em seguida, clique em OK .
- Adicione um controlo CommandButton ao formulário. Por predefinição, é criado Command1 .
- Faça duplo clique em Command1 .
- 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
- 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 .
- 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 "' **".
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