Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0094: Physikalische Druckränder erfassen

 von 

Beschreibung 

Wie weit man sich an die Ränder des jeweils eingestellten Druckers wagen kann, läßt sich recht leicht erfahren.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

GetDeviceCaps

Download:

Download des Beispielprojektes [2,15 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Beschriftungsfeld "Label9"
' Steuerelement: Beschriftungsfeld "Label8"
' Steuerelement: Beschriftungsfeld "Label6"
' Steuerelement: Beschriftungsfeld "Label7"
' Steuerelement: Beschriftungsfeld "Label10"
' Steuerelement: Beschriftungsfeld "Label4"
' Steuerelement: Beschriftungsfeld "Label3"
' Steuerelement: Beschriftungsfeld "Label2"
' Steuerelement: Beschriftungsfeld "Label1"
' Steuerelement: Beschriftungsfeld "Label5"

Option Explicit

Private Declare Function GetDeviceCaps Lib "GDI32" (ByVal _
        hDC As Long, ByVal nIndex As Long) As Long

Const PHYSICALOFFSETX As Long = 112
Const PHYSICALOFFSETY As Long = 113

Private Sub Form_Load()
  Label6.Caption = Printer.DeviceName
  Call PrnBorder
End Sub

Private Sub PrnBorder()
  Dim BW&, BH&
    BW = GetDeviceCaps(Printer.hDC, PHYSICALOFFSETX)
    BH = GetDeviceCaps(Printer.hDC, PHYSICALOFFSETY)
   
    Label7.Caption = BW
    Label8.Caption = BH

    Label9.Caption = Format$(Printer.ScaleX(BW, vbPixels, _
                             vbMillimeters), "###.##")
                             
    Label10.Caption = Format$(Printer.ScaleY(BH, vbPixels, _
                              vbMillimeters), "###.##")
                              
    Printer.KillDoc
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 4 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von rohat polat am 03.11.2009 um 21:38

wenn ich ein spiel auf mein pc mache komt ihmer ein kasten und dort steht trin


GetDeviceCaps failed(D3DERR_NOTAVAILABLE) on adapter 0.

Geschichte: GetDeviceCaps <- UD3DRenderDevice::Init <- UGameEngine::Init <- InitEngine

Kommentar von Florian Rittmeier am 24.06.2003 um 15:02

@Albrecht Schuster
In der MSDN konnte ich keine Angaben zum rechten bzw. unteren Rand finden. Ich gehe daher davon aus, dass es für diese Bereiche keine Limitierung gibt.

Gruß Florian

Kommentar von Dickert Walter am 04.04.2002 um 03:32

Die API GetDeviceCaps mitPHYSICALOFFSETX bzw. Y liefert keine Pixel, sondern DPI, also dots per inch.
Bei 1200 dpi und einem Wert von 200 ergibt sich dann ein Wert von 200/1200 *2,54 oder 0,42333 cm.
Hat der Drucker nur 600 dpi ergibt sich 200 / 600 * 2,54 bzw. 0,84666 cm. Im Beispiel wird der Wert als Pixel betrachtet und umgerechnet. Dies gibt in beiden Fällen 0,42333 cm

Kommentar von Albrecht Schuster am 16.05.2001 um 10:54

Im ZIp wird der linke und der obere Rand ermittelt.
Gibt es den auch eine Möglichkeit den bedruckbaren Bereich oder den unteren und rechten Rand festzustellen ?