CUM se: Ridica și casete de Dialog imprimare din Visual Basic de Control

Rezumat

Utilizați fișierul Vbprndlg.dll în loc de porțiunea de caseta de dialog imprimare pentru controlul Visual Basic CommonDialog . Acest fișier expune proprietăți și furnizează o funcționalitate care controlul CommonDialog nu.

Controlul CommonDialog din Visual Basic permite caseta de dialog imprimare să se afișeze, dar nu oferă acces la multe din proprietățile care pot fi setate în caseta de dialog imprimare și consumată de obiectul de imprimantă . Din cauza problemelor de aliniere cu structurile (definite de utilizator, tipuri) dacă Win32 application programare interface (API) funcții sunt efectuate de Visual Basic, să nu constituie obține informații suplimentare utilizând aceste apeluri API. Ca soluție, acest articol furnizează un DLL care se pot utiliza în loc de porțiunea de imprimantă a controlului CommonDialog .



Descărcați controlul

Fişierul următor este disponibil pentru descărcare de la Microsoft Download Center:
Data publicării: Sep-30-2002

Pentru informații suplimentare despre modul de descărcare Microsoft Support fișiere, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:
119591 cum se obțin fișierele de asistență Microsoft de la serviciile Online
Microsoft a scanat acest fișier pentru viruşi. Microsoft utilizează cele mai actualizate software pentru detectarea virușilor care sunt disponibile la data la care fișierul a fost postat. Fișierul este stocat pe servere securizate care împiedică modificările neautorizate ale fișierului.
Fişierul Vbprndlg.exe conţine următoarele fişiere:


Nume de fișierDimensiune
Vbprndlg.dll100.0 KB
Vbprndlg.exp1.0 KB
Vbprndlg.lib1.72 KB
Vbprndlg.dep118 octeți
Readme.txt10,9 KB


Instalarea Vbprndlg.exe

  1. Extrageți fișierele într-o locație care nu vor fi șterse și care are o cale simplă. Aceste tipuri de fişiere sunt, de obicei, pune în directorul System32 sub Windows sau directorul Winnt.
  2. Faceți clic pe Start, și apoi faceți clic pe executare.
  3. Tastați următoarele, și apoi faceți clic pe OK:
    RegSvr32 C:\Windows\System32\VBPrnDlg.dll
    Asigurați-vă că utilizați calea completă reale DLL ca partea a doua din această comandă.

    Primiți un mesaj care DLL înregistrate cu succes.

Printerdlg Class documentația

Acest DLL este o componentă COM care este adăugată ca o referință la o aplicație Visual Basic. După ce adăugați DLL, utilizați o cod pentru a afișa caseta de dialog imprimare și pentru a regăsi informații selectat de utilizator. Acest comportament este la fel ca comportamentul din caseta de dialog imprimare în controlul CommonDialog în Visual Basic.

Proprietăți de caseta de dialog

Pentru documentația despre oricare dintre aceste proprietăți, Consultați documentația pentru controlul CommonDialog . Printer.HDC este doar în citire, dar următoarele proprietăți, cu excepția celor care sunt marcate cu un asterisc (*) direct pe hartă pe obiectul imprimantă atunci când utilizați următoarea sintaxă:
Printer.Copies = printDlg.Copies
  • Copii
  • Orientarea
  • ColorMode
  • DriverName
  • Duplex
  • PaperBin
  • Este
  • Port
  • PrintQuality
  • hDC
  • Numeimprimantă *
  • Minute *
  • Max *
  • FromPage *
  • ToPage *
Numeimprimantă mapează NumeDispozitiv în obiectul de imprimantă . Ultimele patru proprietățile care sunt marcate cu un asterisc (*) sunt utilizate pentru a determina dacă trebuie să se imprime un subset de pagini disponibile. Pentru a activa Selectați paginile porțiunea din caseta de dialog imprimare , Max trebuie setată la un număr care este mai mare de minute. Dacă este mai mare decât Max minute , apare o eroare atunci când apare caseta de dialog. Dacă utilizatorul selectează un subset, obiectul PrinterDlg asigură că este în interiorul limitele de minute și maxim, și acesta este returnat în proprietățile FromPage și ToPage . Aceste proprietăți nu direct pe hartă pe obiectul de imprimantă , astfel încât Programul ridică caseta de dialog care controlează imprimarea trebuie să gestioneze aceste proprietăți.

Metode de Control dialog şi proprietăţi

  • Semnalizările - aceasta este la fel ca proprietatea Flags controlul CommonDialog . Unele dintre caracteristicile din caseta de dialog care le controlează. Această valoare este setată la utilizarea "sau" cu alt constante în VBPrinterConstants structura. De exemplu:
    printDlg.Flags = VBPrinterConstants.cdlPDDisablePrintToFile _                     Or VBPrinterConstants.cdlPDNoPageNums

    Aceste constante sunt:
    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.


    Utilizați proprietatea Flags pentru a determina dacă utilizatorul a ales un câmp, cum ar fi imprimarea pe fișier. Pentru aceasta, căutați pentru a vedea dacă a fost setat semnalizatorul cdlPDPrintToFile când controlul a revenit la afișarea casetei de dialog.

  • CancelError - acesta este un Boolean care determină dacă se returnează o eroare la programul dacă utilizatorul face clic pe Revocare. În mod implicit, aceasta este False, astfel încât o eroare se produce dacă utilizatorul face clic pe Revocare. Când acest lucru este setat la True, număr eroare 32755 (și H7FF3) apare atunci când utilizatorul face clic pe Revocare. Aveți posibilitatea să trap această eroare pentru a gestiona un caz în care utilizatorul anulează caseta de dialog.
  • ShowPrinter - acesta este singura metodă din această categorie. Această metodă de apelare afișează caseta de dialog. Aceasta acceptă handle din fereastra de apel ca un parametru. De exemplu, următoarea metodă returnează un Boolean:
    printDlg.ShowPrinter Me.hWnd
    Acest lucru poate fi ignorat. Valoarea este True dacă utilizatorul clic de imprimare şi False în caz contrar (adică, dacă utilizatorul face clic pe Revocare).
Notă: în toate aceste exemple, printDlg este o instanță a clasei conținute în acest DLL. Acesta este declarat utilizând următorul cod:
Dim printDlg As PrinterDlgSet printDlg = New PrinterDlg

Pași pentru a construi eșantion

Pentru a crea o aplicație exemplificativă care va utiliza DLL pentru a determina utilizatorului preferințele și scrieți-le în fereastra depanare, urmați acești pași:
  1. În Microsoft Visual Basic, creați un nou proiect Standard EXE. În mod implicit, se creează Form1.
  2. În meniul de proiect , faceți clic pe referințe.
  3. Selectați Microsoft VB imprimantă Dialog(PSS), și apoi faceți clic pe OK.
  4. Adăugarea unui control CommandButton în formular. În mod implicit, se creează Command1 .
  5. Faceți dublu clic pe Command1.
  6. Lipiți următorul cod în Evenimentul Command1_Click :
    Dim printDlg As PrinterDlgSet 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. Apăsați tasta F5 pentru a porni depanarea și să porniți aplicația. Faceți clic pe Command1 pentru a deschide caseta de dialog imprimare .
  8. După ce reveniți la caseta de dialog imprimare , căutați în fereastra depanare la ieșire care a fost returnată.
Notă: dacă doriți o eroare specific pentru a fi crescut și tratat atunci când utilizatorul face clic pe Revocare (similar cu comportamentul pe care se produce cu CommonDialog de control), comentați liniile care sunt prefixul "" ** ".


Referințe

Pentru informații suplimentare despre cum se utilizează caseta de dialog Imprimare în Visual Basic, faceți clic pe următorul număr de articol pentru a vedea articolul în baza de cunoștințe Microsoft:
173981 PRB: comportament diferențe de imprimare de Dialog pe platforme diferite
Pentru informații suplimentare despre setările imprimantei, faceți clic pe numerele de articol de mai jos pentru a vedea articolele în baza de cunoștințe Microsoft:
Ghid 190218 : regăsi setările de pe un Driver de imprimantă
Ghid 194789 : determina disponibile PaperBins cu DeviceCapabilities API
Proprietăți

ID articol: 322710 - Ultima examinare: 23 feb. 2017 - Revizie: 1

Feedback