Μπορείτε να χρησιμοποιήσετε το αρχείο Vbprndlg.dll αντί για το
Εκτύπωσητμήμα πλαισίου διαλόγου της Visual Basic
CommonDialogControl. Εκθέτει τις ιδιότητες αυτού του αρχείου και να παρέχει λειτουργικότητα που το
CommonDialogστοιχείο ελέγχου δεν την υποστηρίζει.
Για να
CommonDialogστοιχείο ελέγχου σε Visual Basic επιτρέπει την
Εκτύπωσηνα εμφανίζεται το πλαίσιο διαλόγου, αλλά δεν παρέχει πρόσβαση σε πολλές από τις ιδιότητες που μπορούν να οριστούν στο στο
Εκτύπωσηπαράθυρο διαλόγου και που καταναλώνεται από το
Εκτυπωτής (Printer)Object. Εξαιτίας προβλημάτων στοίχιση με δομές (δηλαδή χρήστη τύπους) όταν γίνονται οι λειτουργίες προγραμματισμού διασύνδεσης (API) Win32 εφαρμογής από τη Visual Basic, δεν είναι δυνατό να αποκτήσετε πρόσθετες πληροφορίες αξιόπιστα χρησιμοποιώντας αυτές τις κλήσεις API. Ως λύση, αυτό το άρθρο παρέχει ένα αρχείο DLL που μπορείτε να χρησιμοποιήσετε αντί για το
Εκτυπωτής (Printer)μέρος του
CommonDialogControl.
Άμεση λήψη του στοιχείου ελέγχου
Το ακόλουθο αρχείο είναι διαθέσιμο για λήψη από το Κέντρο λήψης της Microsoft (Download Center):
Vbprndlg.exe
(http://download.microsoft.com/download//vb60pro/Utility/1.0/WIN98MeXP/EN-US/Vbprndlg.exe)
Ημερομηνία έκδοσης: Σεπ-30-2002
Για περισσότερες πληροφορίες σχετικά με τον τρόπο λήψης αρχείων υποστήριξης της Microsoft, κάντε κλικ στον αριθμό του άρθρου παρακάτω για να προβάλετε το άρθρο της Γνωσιακής Βάσης της Microsoft (Knowledge Base):
119591
(http://support.microsoft.com/kb/119591/EN-US/
)
Τρόπος απόκτησης αρχείων υποστήριξης της Microsoft από ηλεκτρονικές υπηρεσίες
Η Microsoft εξέτασε το αρχείο αυτό για ιούς. Η Microsoft χρησιμοποίησε το πιο πρόσφατο λογισμικό εντοπισμού ιών που ήταν διαθέσιμο κατά την ημερομηνία δημοσίευσης του αρχείου. Το αρχείο είναι αποθηκευμένο σε διακομιστές με ενισχυμένη ασφάλεια, οι οποίοι βοηθούν στην αποτροπή μη εξουσιοδοτημένων αλλαγών στο αρχείο.Το αρχείο Vbprndlg.exe περιέχει τα ακόλουθα αρχεία:
Σύμπτυξη αυτού του πίνακαΑνάπτυξη αυτού του πίνακα
| Όνομα αρχείου | Μέγεθος (Size) |
|---|
| Vbprndlg.dll | 100.0 KB |
| Vbprndlg.Exp | 1.0 KB |
| Vbprndlg.lib | 1.72 KB |
| Vbprndlg.DEP | Byte που 118 |
| Readme.txt | 10.9 KB |
Εγκατάσταση Vbprndlg.exe
- Εξαγάγετε τα αρχεία σε μια θέση που δεν θα διαγραφεί και έχει μια απλή διαδρομή. Αυτοί οι τύποι αρχείων συνήθως τοποθετούνται στον κατάλογο System32 κάτω από τα Windows ή Winnt καταλόγου.
- Κάντε κλικStart, και στη συνέχεια κάντε κλικ στο κουμπίΕκτέλεση.
- Πληκτρολογήστε τα ακόλουθα και στη συνέχεια κάντε κλικ στο κουμπίOk:
RegSvr32 C:\Windows\System32\VBPrnDlg.dll
Βεβαιωθείτε ότι χρησιμοποιείτε την πραγματική πλήρη διαδρομή προς το αρχείο DLL ως το δεύτερο μέρος αυτής της εντολής.
Λαμβάνετε ένα μήνυμα που θα καταχωρηθεί με επιτυχία το αρχείο DLL.
Κλάση Printerdlg τεκμηρίωσης
Αυτό το DLL είναι ένα στοιχείο COM το οποίο προστίθεται ως αναφορά σε μια εφαρμογή της Visual Basic. Αφού προσθέσετε το αρχείο DLL, μπορείτε να το χρησιμοποιήσετε σε κώδικα για να εμφανίσετε το
Εκτύπωσηπαράθυρο διαλόγου και να ανακτήσει τις πληροφορίες που επιλέγει ο χρήστης.
Αυτή η συμπεριφορά είναι ίδια με τη συμπεριφορά του
Εκτύπωσηπαράθυρο διαλόγου με το
CommonDialogΈλεγχος της Visual Basic.
Το παράθυρο διαλόγου Ιδιότητες πλαισίου
Για την τεκμηρίωση σχετικά με οποιαδήποτε από αυτές τις ιδιότητες, ανατρέξτε στην τεκμηρίωση για το
CommonDialogControl.
Printer.hDCείναι μόνο για ανάγνωση, αλλά όλες τις παρακάτω ιδιότητες εκτός από εκείνες που έχουν επισημανθεί με αστερίσκο (*) απευθείας αντιστοίχιση σε το
Εκτυπωτής (Printer)το αντικείμενο όταν χρησιμοποιείτε την ακόλουθη σύνταξη:
Printer.Copies = printDlg.Copies
- Αντίγραφα
- Προέλευση (Orientation)
- ColorMode
- όνομα_προγράμματος_οδήγησης
- Διπλής όψης
- PaperBin
- PaperSize
- Θύρα
- PrintQuality
- hDC
- Όνομα_εκτυπωτή *
- Ελάχιστο *
- Μέγιστος αριθμός *
- FromPage *
- ToPage *
Όνομα_εκτυπωτήαντιστοιχεί σε
Όνομα_συσκευήςΣτο
Εκτυπωτής (Printer)Object. Τα τέσσερα τελευταία ιδιότητες που έχουν επισημανθεί με αστερίσκο (*) που χρησιμοποιούνται για να προσδιορίσετε εάν ένα υποσύνολο των διαθέσιμων σελίδων πρέπει να εκτυπωθούν.
Για να ενεργοποιήσετε το
Επιλέξτε τις σελίδεςμέρος του
Εκτύπωσηπαράθυρο διαλόγου,
Μέγιστοπρέπει να οριστεί σε έναν αριθμό που είναι μεγαλύτερα από
Το ελάχιστο. Εάν,
Το ελάχιστοείναι μεγαλύτερο από
Μέγιστο, παρουσιάζεται ένα σφάλμα, όταν εμφανιστεί το παράθυρο διαλόγου. Εάν ο χρήστης επιλέξει ένα υποσύνολο του
PrinterDlgαντικείμενο βεβαιώνεται ότι βρίσκεται εντός των ορίων
Το ελάχιστοAND
Μέγιστο, και επιστρέφεται με το
FromPageAND
ToPageΙδιότητες (Properties). Αυτές οι ιδιότητες δεν αντιστοίχιση απευθείας επάνω στο
Εκτυπωτής (Printer)αντικείμενο, έτσι ώστε το πρόγραμμα που προκαλεί το παράθυρο διαλόγου και να ελέγχει την εκτύπωση πρέπει να χειριστεί αυτές τις ιδιότητες.
Ιδιότητες και μέθοδοι ελέγχου του παραθύρου διαλόγου
- Σημαίες-Αυτό είναι το ίδιο με τοΣημαίεςιδιότητα από τοCommonDialogControl. Ελέγχει ορισμένες από τις δυνατότητες του παραθύρου διαλόγου. Η τιμή αυτή ορίζεται using "Ή" με διαφορετικές σταθερές με τηνVBPrinterConstantsδομή. Για παράδειγμα:
printDlg.Flags = VBPrinterConstants.cdlPDDisablePrintToFile _
Or VBPrinterConstants.cdlPDNoPageNums
Οι σταθερές αυτές είναι οι εξής:
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.
Μπορείτε να χρησιμοποιήσετε τοΣημαίεςΓια να προσδιορίσετε αν ο χρήστης επιλέξει ένα πεδίο όπως η ιδιότηταΕκτύπωση σε αρχείο. Για να το κάνετε αυτό, ανατρέξτε για να δείτε εάν ηcdlPDPrintToFileη σημαία έχει οριστεί όταν το στοιχείο ελέγχου έχει επιστραφεί από την εμφάνιση του παραθύρου διαλόγου.
- CancelError-Αυτή είναι μια σημαία δυαδικής τιμής που καθορίζει αν θα επιστραφεί ένα σφάλμα στο πρόγραμμα, εάν ο χρήστης κάνει κλικΆκυρο (Cancel). Από προεπιλογή, αυτή είναι FALSE (Ψευδής), έτσι ώστε το σφάλμα δεν παρουσιάζεται εάν ο χρήστης κάνει κλικΆκυρο (Cancel). Όταν ορίζεται στην τιμή True, ο αριθμός σφάλματος 32755 (& H7FF3) παρουσιάζεται όταν ο χρήστης κάνει κλικΆκυρο (Cancel). Μπορείτε να παγιδεύσετε αυτό το σφάλμα να χειριστεί την περίπτωση όπου ο χρήστης ακυρώσει το παράθυρο διαλόγου.
- ShowPrinter- This is the only method in this class. Calling this method
displays the dialog box. This accepts the handle of the calling window as a
parameter. For example, the following method returns a Boolean:
printDlg.ShowPrinter Me.hWnd
This can be ignored. The value is True if the user clicksΕκτύπωσηand False otherwise (that is, if the user clicksΆκυρο (Cancel)).
ΣΗΜΕΙΩΣΗ: In all these examples,
printDlgis an instance of the class that is contained in this DLL. It is
declared by using the following code:
Dim printDlg As PrinterDlg
Set printDlg = New PrinterDlg
Βήματα για τη δημιουργία του δείγματος
To create a sample application that will use the DLL to determine
the user's preferences and then write them to the Debug window, follow these
steps:
- In Microsoft Visual Basic, create a new Standard EXE
project. Από προεπιλογή, δημιουργείται η φόρμα Form1.
- Στο διακομιστήΤο έργομενού, κάντε κλικ στο κουμπίΑναφορές.
- ΕπιλογήMicrosoft VB Printer Dialog(PSS), και στη συνέχεια κάντε κλικ στο κουμπίOk.
- Προσθήκη ενόςΣτοιχείο CommandButtonελέγχου στη φόρμα. Από προεπιλογή, το στοιχείοCommand1δημιουργείται.
- Διπλό κλικCommand1.
- Επικολλήστε τον ακόλουθο κώδικα στο στο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
- Press the F5 key to start debugging and to start the
application. Κάντε κλικCommand1Για να ανοίξετε τοΕκτύπωσηπαράθυρο διαλόγου.
- After you return from theΕκτύπωσηdialog box, look in the Debug window at the output that was
returned.
ΣΗΜΕΙΩΣΗ: If you want a specific error to be raised and handled when the
user clicks
Άκυρο (Cancel)(similar to the behavior that occurs with the
CommonDialogcontrol), uncomment the lines that are prefixed with "'**".
For
additional information about using the Print dialog box in Visual Basic, click
the article number below to view the article in the Microsoft Knowledge Base:
173981
(http://support.microsoft.com/kb/173981/EN-US/
)
PRB: Behavior Differences of Print Dialog on Different Platforms
For
additional information about printer settings, click the article numbers below
to view the articles in the Microsoft Knowledge Base:
190218
(http://support.microsoft.com/kb/190218/EN-US/
)
HOWTO: Retrieve Settings From a Printer Driver
194789
(http://support.microsoft.com/kb/194789/EN-US/
)
HOWTO: Determine Available PaperBins with DeviceCapabilities API