Rubrik: Sonstiges | 22.03.05 |
CreateDC-Funktion Diese Funktion erstellt einen Devicekontext eines Gerätes wie des Druckers oder der Grafikkarte. | ||
Betriebssystem: Win95, Win98, WinNT 3.1, Win2000, WinME | Views: 14.211 |
Deklaration:
Declare Function CreateDC Lib "gdi32.dll" _ Alias "CreateDCA" ( _ ByVal lpszDriver As String, _ ByVal lpszDevice As String, _ ByVal lpszOutput As Long, _ lpInitData As Any) As Long
Beschreibung:
Diese Funktion erstellt einen Devicekontext eines Gerätes wie des Druckers oder derGrafikkarte.
Parameter:
lpszDriver | Erwartet den Namen des Gerätetreibers, für dessen Gerät ein Devicekontext erstellt werden soll. Hier kannz.B. "DISPLAY" für eine Grafikkarte oder der Treiber eines Druckers angegeben werden. |
lpszDevice | Erwartet den Namen des Gerätes. Hier kannz.B. für die Standardgrafikkarte ein leerer String übergeben werden wenn bei "lpszDriver" der String "DISPLAY" übergeben wurde, oder der Name eines Druckers falls bei "lpszDriver" ein Druckertreiber übergeben wurde. |
lpszOutput | Reserviert, setzen sie diese Option auf denWert "0". |
lpInitData | Erwartet eine DEVMODE-Struktur die mit Initialisierungsdaten gefüllt ist, um das Gerät imVoraus einzustellen. Alternativ kann hier auch der Wert "0" übergeben werden. |
Rückgabewert:
Ist die Funktion erfolgreich, so liefert sie einen "Devicehandle" zu dem neuerstellten Devicekontext, andernfalls wird der Wert "0" zurückgegeben. Unter Windows NT/2000 könnenSie die GetLastError-Funktion für erweiterteFehlerinformationen aufrufen.
Beispiel:
Private Declare Function CreateDC Lib "gdi32.dll" _ Alias "CreateDCA" ( _ ByVal lpszDriver As String, _ ByVal lpszDevice As String, _ ByVal lpszOutput As Long, _ lpInitData As Any) As Long Private Declare Function GetDeviceCaps Lib "gdi32" ( _ ByVal hdc As Long, _ ByVal nIndex As Long) As Long Private Declare Function DeleteDC Lib "gdi32.dll" (ByVal hdc As Long) As Long ' CreateDC nIndex - Konstanten Private Const DRIVERVERSION = 0 ' Treiberversion Private Const HORZSIZE = 4 ' Horizontale Breite in Millimeter Private Const VERTSIZE = 6 ' Vertikale Höhe in Millimeter Private Const HORZRES = 8 ' Horizontale Breite in Pixel Private Const VERTRES = 10 ' Vertikale Höhe in Pixel Private Const BITSPIXEL = 12 ' Anzahl der Bits pro Pixel Private Const PLANES = 14 ' Anzahl der Planes Private Const NUMBRUSHES = 16 ' Anzahl der Brushes die das Device besitzt Private Const NUMPENS = 18 ' Anzahl der Pens die das Device besitzt Private Const NUMFONTS = 22 ' Anzahl der Fonts die das Device besitzt Private Const NUMCOLORS = 24 ' Anzahl der Farben die das Device unterstützt Private Const ASPECTX = 40 ' Relative Länge fürs Zeichnen von Linien Private Const ASPECTY = 42 ' Relative Höhe fürs Zeichnen von Linien Private Const CLIPCAPS = 36 ' Unterstützung von Clipping, der Rückgabewert ' ist 1 wenn Clipping unterstützt wird, ansonsten 0 Private Const SIZEPALETTE = 104 ' Anzahl der Einträge in der Palette Private Const NUMRESERVED = 106 ' Anzahl der Reservierten Einträge in der Palette Private Const COLORRES = 108 ' Aktuelle Farbauflösung Private Const PHYSICALWIDTH = 110 ' Physische Breite in der Devicemaßeinheit Private Const PHYSICALHEIGHT = 111 ' Physische Höhe in der Devicemaßeinheit Private Const PHYSICALOFFSETX = 112 ' Physischer druckbarer Bereich - X Rand Private Const PHYSICALOFFSETY = 113 ' Physischer druckbarer Bereich - Y Rand Private Const VREFRESH = 116 ' (Win NT) Vertikale Refreshrate, ist der ' Rückgabewert 0 oder 1 so ist die Refreshrate der Standardwert Private Const DESKTOPHORZRES = 118 ' (Win NT) Breite des Desktops, dieser ' Wert kann auf Grund von mehreren Monitoren breiter sein als HORZRES Private Const DESKTOPVERTRES = 117 ' (Win NT) Höhe des Desktops, dieser Wert ' kann auf Grund von mehreren Monitoren breiter sein als VERTRES Private Const BLTALIGNMENT = 119 ' (Win NT) Die beste Pixelauflösung für ' einen Blittingvorgang, ist der Rückagebewert 0 so ist die Hardware ' beschleunigt und jede Pixelauflösung ist optimal Private Const TECHNOLOGY = 2 ' Gibt eine TECHNOLOGY-Konstante zurück, die das ' Gerät beschreibt Private Const RASTERCAPS = 38 ' Gibt eine / mehrere RASTERCAPS-Konstante(n) ' zurück, die Eigenschaften des Gerätes beschreiben Private Const CURVECAPS = 28 ' Gibt eine / mehrere CURVECAPS-Konstante(n) ' zurück, die Eigenschaften über das Zeichnen von Kurven beschreiben Private Const LINECAPS = 30 ' Gibt eine / mehrere LINECAPS-Konstante(n) zurück ' die Eigenschaften über das Zeichnen von Linien beschreiben ' CreateDC Rückgabe-Konstanten Private Const DT_PLOTTER = 0 ' (TECHNOLOGY) Raster Plotter Private Const DT_RASDISPLAY = 1 ' (TECHNOLOGY) Raster Anzeige Private Const DT_RASPRINTER = 2 ' (TECHNOLOGY) Raster Drucker Private Const DT_RASCAMERA = 3 ' (TECHNOLOGY) Raster Kamera Private Const DT_METAFILE = 5 ' (TECHNOLOGY) Meta Datei Private Const DT_DISPFILE = 6 ' (TECHNOLOGY) Anzeige Datei Private Const RC_BANDING = 2 ' (RASTERCAPS) Device requires banding support Private Const RC_BITBLT = 1 ' (RASTERCAPS) Standard blitten möglich Private Const RC_BITMAP64 = 8 ' (RASTERCAPS) Das Gerät unterstützt 64-Bit Bitmaps Private Const RC_DIBTODEV = &H200 ' (RASTERCAPS) Das Gerät unterstützt DIBitsToDevice Private Const RC_FLOODFILL = &H1000 ' (RASTERCAPS) Das Gerät unterstützt FloodFill Private Const RC_GDI20_OUTPUT = &H10 ' (RASTERCAPS) Das Gerät hat einen 2.0 Ausgang Aufruf Private Const RC_PALETTE = &H100 ' (RASTERCAPS) Das Gerät unterstützt Paletten Private Const RC_SCALING = 4 ' (RASTERCAPS) Das Gerät benötigt eine Skalierungsunterstützung Private Const RC_STRETCHBLT = &H800 ' (RASTERCAPS) Das Gerät unterstützt das Blitten & Stretchen von Bitmaps Private Const RC_STRETCHDIB = &H2000 ' (RASTERCAPS) Das Gerät unterstützt das Stretchen von DIB-Bitmaps Private Const CC_NONE = 0 ' (CURVECAPS) Kurven werden nicht unterstützt Private Const CC_CIRCLES = 1 ' (CURVECAPS) Kreise werden unterstützt Private Const CC_PIE = 2 ' (CURVECAPS) Kreisausschnitte werden unterstützt Private Const CC_CHORD = 4 ' (CURVECAPS) Chords werden unterstützt Private Const CC_ELLIPSES = 8 ' (CURVECAPS) Ellipsen werden unterstützt Private Const CC_WIDE = 16 ' (CURVECAPS) Weite Linien werden unterstützt Private Const CC_STYLED = 32 ' (CURVECAPS) Stylische Linien werden unterstützt Private Const CC_WIDESTYLED = 64 ' (CURVECAPS) Weite stylische Linien werden unterstützt Private Const CC_INTERIORS = 128 ' (CURVECAPS) Innere Linien werden unterstützt Private Const CC_ROUNDRECT = 256 ' (CURVECAPS) Abgerundete Rechtecke werden unterstützt Private Const LC_NONE = 0 ' (LINECAPS) Linien werden nicht unterstützt Private Const LC_POLYLINE = 2 ' (LINECAPS) Polylinien werden unterstützt Private Const LC_MARKER = 4 ' (LINECAPS) Marker werden unterstützt Private Const LC_POLYMARKER = 8 ' (LINECAPS) Polymarker werden unterstützt Private Const LC_WIDE = 16 ' (LINECAPS) Weite Linien werden unterstützt Private Const LC_STYLED = 32 ' (LINECAPS) Stylische Linien werden unterstützt Private Const LC_WIDESTYLED = 64 ' (LINECAPS) Weite stylische Linien werden unterstützt Private Const LC_INTERIORS = 128 ' (LINECAPS) Innere Linien werden unterstützt
' Devicekontext der Grafikkarte anlegen und Informationen ausgeben Private Sub Command1_Click() Dim hdc As Long, Retval As Long ' Device Kontext erstellen hdc = CreateDC("DISPLAY", vbNullChar, 0&, ByVal 0&) If hdc = 0 Then MsgBox "Es konnte kein Devicekontext erstellt werden." Exit Sub End If ' Informationen auswerten Select Case True Case CBool(GetDeviceCaps(hdc, TECHNOLOGY) And DT_RASDISPLAY) Debug.Print "Das Gerät ist ein Anzeige Gerät" Case CBool(GetDeviceCaps(hdc, TECHNOLOGY) And DT_RASPRINTER) Debug.Print "Das Gerät ist ein Drucker" Case CBool(GetDeviceCaps(hdc, TECHNOLOGY) And DT_PLOTTER) Debug.Print "Das Gerät ist ein Plotter" Case CBool(GetDeviceCaps(hdc, TECHNOLOGY) And DT_RASCAMERA) Debug.Print "Das Gerät ist ein Kamera" End Select Debug.Print "Horizontale Auflösung: " & GetDeviceCaps(hdc, HORZRES) Debug.Print "Vertikale Auflösung: " & GetDeviceCaps(hdc, VERTRES) Debug.Print "Anzahl der Farben: " & GetDeviceCaps(hdc, BITSPIXEL) & "-Bit" ' Device Kontext zerstören DeleteDC hdc End Sub