vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Grafik & Zeichnen22.03.05
ExtTextOut-Funktion

Diese Funktion zeichnet einen Text an einer angegebenen Position auf ein Gerät, wobei noch Optionen wie der Abstand zwischen jedem Zeichen und die Art der Textzeichnung eingestellt werden können.

Betriebssystem:  Win95, Win98, WinNT 3.1, Win2000, WinMEViews:  9.489 

Deklaration:

Declare Function ExtTextOut Lib "gdi32" _
  Alias "ExtTextOutA" ( _
  ByVal hdc As Long, _
  ByVal x As Long, _
  ByVal y As Long, _
  ByVal wOptions As Long, _
  lpRect As Any, _
  ByVal lpString As String, _
  ByVal nCount As Long, _
  lpDx As Long) As Long

Beschreibung:
Diese Funktion zeichnet einen Text an einer angegebenen Position auf ein Gerät, wobei noch Optionen wie derAbstand zwischen jedem Zeichen und die Art der Textzeichnung eingestellt werden können.

Parameter:
hdcErwartet den Devicekontext des Gerätes, auf dem der Text ausgegeben werden soll.
XErwartet den horizontalenReferenzpunkt, an dem der Text ausgegeben werden soll.
YErwartet den vertikalen Referenzpunkt, an dem der Text ausgegeben werden soll.
fuOptionsErwartet eine oder eine Kombination aus mehreren der "fuOptions"-Konstanten die festlegen, wie der Text ausgegeben werden soll.
lprcErwartet eine RECT-Struktur, in der sich der Referenzpunkt befindet und in dem der Text auf dem Gerät ausgegeben werden soll. Wird hier derWert "0" übergeben so wird standardmäßig das ganze Gerät verwendet.
lpStringErwartet den Text, der auf das Gerät gezeichnet werden soll.
cbCountErwartet die Anzahl der Zeichen, die in "lpString" enthalten sind.
lpDxErwartet ein Array, das mitden Abständen zwischen jedem der Zeichen gefüllt ist. Das Array muss somit [Anzahl der Zeichen von lpString -1] Felder haben.

fuOptions Konstanten:

Const ETO_CLIPPED = 4
' Der Text wird auf das Ziel zurechgeschnitten
 
Const ETO_GLYPH_INDEX = &H10
' (ab Win 95 / NT 4.0 und Später) bei lpString wird die Rückgabe der  
' GetCharacterPlacement-Funktion übergebeben
 
Const ETO_IGNORELANGUAGE = &H1000
' (Win NT 4.0 und Später) Es wird kein Scripting Support eingeschaltet, dies  
' kann dazu führen, dass der Text nicht angezeigt werden kann
 
Const ETO_NUMERICSLATIN = &H800
' (Win 96 / NT 4.0 und Später) Wird benutzt um Europäische Zahlen anzuzeigen
 
Const ETO_NUMERICSLOCAL = &H400
' (Win 96 / NT 4.0 und Später) Wird benutzt um lokale Zahlen anzuzeigen
 
Const ETO_OPAQUE = 2
' Die aktuelle Hintergrundfarbe wird verwendet um die Hintergrundfarbe des  
' Ziels auszufüllen
 
Const ETO_PDY = &H2000
' (Win 2000 / XP) bei lpDX wird ein Pointer zu einem 2 Felder großen Array  
' übergeben, das die Abstände (x und y) zwischen den Buchstaben enthält
 
Const ETO_RTLREADING = &H80
' (Win 95 / NT 4.0 und später bei Ost Asiatischen Windows Versionen) Der  
' Text wird, wenn möglich, von rechts nach links ausgegeben

Rückgabewert:
Ist die Funktion erfolgreich, so wird ein Wert "ungleich 0" zurückgegeben, andernfalls wird derWert "0" zurückgegeben. Unter Windows NT / 2000 / XP können Sie die GetLastError-Funktion für erweiterte Fehlerinformationen aufrufen.

Beispiel:

Private Declare Function GetTextAlign Lib "gdi32.dll" ( _
  ByVal hdc As Long)  As Long
Private Declare Function SetTextAlign Lib "gdi32.dll" ( _
  ByVal hdc As Long, _
   ByVal wFlags As Long) As Long
Private Declare Function CreateFont Lib "gdi32.dll" _
  Alias "CreateFontA"  ( _
  ByVal nHeight As Long, _
  ByVal nWidth As Long, _
  ByVal nEscapement As Long, _
   ByVal nOrientation As Long, _
  ByVal fnWeight As Long, _
  ByVal fdwItalic As Long, _
  ByVal fdwUnderline As Long, _
  ByVal fdwStrikeOut As Long, _
  ByVal fdwCharSet As Long, _
  ByVal fdwOutputPrecision As Long, _
  ByVal fdwClipPrecision As Long, _
  ByVal fdwQuality As Long, _
  ByVal fdwPitchAndFamily  As Long, _
  ByVal lpszFace As String) As Long
Private Declare Function ExtTextOut Lib "gdi32" _
  Alias "ExtTextOutA" ( _
  ByVal hdc As Long, _
  ByVal x As Long, _
  ByVal y As Long, _
  ByVal wOptions As Long, _
   lpRect As Any, _
  ByVal lpString As String, _
  ByVal nCount As Long, _
  lpDx As Long) As Long
Private Declare Function SelectObject Lib "gdi32" ( _
  ByVal hdc As Long, _
  ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" ( _
  ByVal hObject As Long)  As Long
 
Private Type RECT
  Left As Long
  Top As Long
  Right As Long
  Bottom As Long
End Type
 
' CreateFont fnWeight-Konstanten
Const FW_DONTCARE = 0  ' Standard
Const FW_THIN = 100  ' Super dünn
Const FW_EXTRALIGHT = 200  ' Extra dünn
Const FW_LIGHT = 300  ' Dünn
Const FW_NORMAL = 400  ' Normal
Const FW_MEDIUM = 500  ' Mittel
Const FW_SEMIBOLD = 600  ' Etwas dicker
Const FW_BOLD = 700  ' Fett
Const FW_EXTRABOLD = 800  ' Extra fett
Const FW_HEAVY = 900  ' Super fett
 
' CreateFont fdwCharSet-Konstanten
Const ANSI_CHARSET = 0  ' Ansi Zeichensatz
Const ARABIC_CHARSET = 178  ' Arabisch (NT/2000)
Const BALTIC_CHARSET = 186  ' Baltisch (Win 9x)
Const CHINESEBIG5_CHARSET = 136  ' Chinesisch
Const DEFAULT_CHARSET = 1  ' Standard
Const EASTEUROPE_CHARSET = 238  ' Osteuropäisch (Win 9x)
Const GB2312_CHARSET = 134  ' Englisch
Const GREEK_CHARSET = 161  ' Griechisch (Win 9x)
Const HANGEUL_CHARSET = 129  ' Handgeul
Const HEBREW_CHARSET = 177  ' Hebräisch (NT/2000)
Const JOHAB_CHARSET = 130  ' Johab (Win 9x)
Const MAC_CHARSET = 77  ' Mac (Win 9x)
Const OEM_CHARSET = 255  ' OEM
Const RUSSIAN_CHARSET = 204  ' Russisch (Win 9x)
Const SHIFTJIS_CHARSET = 128  ' ShiftJis
Const SYMBOL_CHARSET = 2  ' Symbolisch
Const THAI_CHARSET = 222  ' Thailändisch (NT/2000)
Const TURKISH_CHARSET = 162  ' Türkisch (Win 9x)
 
' CreateFont fdwOutPrecision-Konstanten
Const OUT_DEFAULT_PRECIS = 0  ' Benutzt den Standard-Font
Const OUT_DEVICE_PRECIS = 5  ' Benutzt einen Device-Font wenn mehrere Dateien  
' mit dem selben Namen existieren
Const OUT_OUTLINE_PRECIS = 8  ' (NT/2000) Benutzt eine TureType-Schriftart  
' oder Outline-Based Fonts.
Const OUT_RASTER_PRECIS = 6  ' Benutzt einen Raster-Font wenn mehrere Dateien  
' mit dem selben Namen existieren
Const OUT_STRING_PRECIS = 1  ' Raster-Font für die Enumeration
Const OUT_STROKE_PRECIS = 3  ' (Win 9x) Vector Font für die Enumeration   
' (NT/2000) TrueType, Outline-Based oder VectorFont für die Enumeration
Const OUT_TT_ONLY_PRECIS = 7  ' Benutzt eine TrueType-Schriftart
Const OUT_TT_PRECIS = 4  ' Benutzt einen TrueType-Font wenn andere Fonts mit  
' dem selben Namen existieren
 
' CreateFont fdwClipPrecision-Konstanten
Const CLIP_DEFAULT_PRECIS = 0  ' Standard
Const CLIP_EMBEDDED = 128  ' wird benutzt für eingebettete schreibgeschützte Fonts 
Const CLIP_LH_ANGLES = 16  ' Die Richtung von irgendwelchen Rotationen wird  
' vom Koordinatensystem festgelegt (gegen den Uhrzeigersinn)
Const CLIP_STROKE_PRECIS = 2  ' Raster Vector oder TrueType Fonts für die Enumeration 
 
' CreateFont fdwQuality-Konstanten
Const ANTIALIASED_QUALITY = 4  ' (Win 9x, NT 4.0, 2000) Die Schriftart wird  
' immer mit Anitaliasing gezeichnet, wenn möglich
Const DEFAULT_QUALITY = 0  ' Standard Qualität
Const DRAFT_QUALITY = 1  ' Das Erscheinen der Fonts ist wenig wichtig wie  
' bei PROOF_QUALITY
Const NONANTIALIASED_QUALITY = 3  ' (Win 9x, NT 4.0, 2000) Die Schriftart  
' wird nicht mit Anitaliasing gezeichnet
Const PROOF_QUALITY = 2  ' Die Qualität der Erscheinung ist wichtiger als  
' das exakte Übereinstimmen mit den Font-Attributen
 
' CreateFont fdwPitchAndFamily-Konstanten
Const DEFAULT_PITCH = 0  ' Standard
Const FIXED_PITCH = 1  ' Fest
Const VARIABLE_PITCH = 2  ' Variabel
Const FF_DECORATIVE = 80  ' Dekoriert
Const FF_DONTCARE = 0  ' Egal
Const FF_MODERN = 48  ' Modern
Const FF_ROMAN = 16  ' Roman
Const FF_SCRIPT = 64  ' Script
Const FF_SWISS = 32  ' Swiss
 
' Get- / SetTextAlign Rückgabe- / wFlags-Konstanten
Private Const TA_BASELINE = 24 ' Alle Textausgaben erfolgen
Private Const TA_BOTTOM = 8 ' Alle Textausgaben werden unterhalb der  
' angegebenen Koordinaten ausgegeben
Private Const TA_CENTER = 6 ' Alle Textausgaben werden mittig der  
' angegebenen Koordinaten ausgegeben
Private Const TA_LEFT = 0 ' Alle Textausgaben werden links von den  
' angegebenen Koordinaten ausgegeben
Private Const TA_NOUPDATECP = 0 ' Der aktuelle Punkt wird nicht zum  
' Referenzpunkt gemacht
Private Const TA_RIGHT = 2 ' Alle Textausgaben werden Rechts von den  
' angegebenen Koordinaten ausgegeben
Private Const TA_TOP = 0 ' Alle Textausgaben werden oberhalb der angegebenen  
' Koordinaten ausgegeben
Private Const TA_UPDATECP = 1 ' die Aktuelle Position wird zum Referenzpunkt gemacht 
Private Const TA_RTLREADING = 256 ' der Text wird, wenn möglich, von rechts  
' nach links ausgegeben
 
' ExtTextOut wOptions-Konstanten
Private Const ETO_CLIPPED = 4 ' Der Text wird auf das Ziel zurechgeschnitten
Private Const ETO_GLYPH_INDEX = &H10 ' (ab Win 95 / NT 4.0 und Später) bei lpString wird die Rückgabe 
' der GetCharacterPlacement-Funktion übergebeben
Private Const ETO_IGNORELANGUAGE = &H1000 ' (Win NT 4.0 und Später) Es wird kein Scripting Support  
' eingeschaltet, dies kann dazu führen das der Text  
' nicht angezeigt werden kann
Private Const ETO_NUMERICSLATIN = &H800 ' (Win 96 / NT 4.0 und Später) Wird  
' benutzt um Europäische Zahlen anzuzeigen
Private Const ETO_NUMERICSLOCAL = &H400 ' (Win 96 / NT 4.0 und Später) Wird  
' benutzt um Lokale Zahlen anzuzeigen
Private Const ETO_OPAQUE = 2 ' Die aktuelle Hintergrundfarbe wird verwendet  
' um die Hintergrundfarbe des Ziels auszufüllen
Private Const ETO_PDY = &H2000 ' (Win 2000 / XP) bei lpDX wird ein Pointer zu einem 2 Felder 
' großem Array übergeben das die Abstände (x und y)  
' zwischen den Buchstaben enthält
Private Const ETO_RTLREADING = &H80 ' (Win 95 / NT 4.0 und später bei Ost-Asiatischen Windows Versionen) 
' Der Text wird, wenn möglich, von rechts nach links ausgegeben
' Zeichnet einen Text inmitten des Fensters
Private Sub Command1_Click()
  Dim Retval As Long, hOldFont As Long, Distance() As Long
  Dim OutStr As String
 
  ' Text  für die Ausgabe bestimmt
  OutStr = "VB Api Helpline"
 
  ' Form Maßeinheit auf Pixel stellen (AutoRedraw muss True sein !!)
  Me.ScaleMode = vbPixels
 
  ' Aktuelle Textausrichtung ermitteln
  Retval = GetTextAlign(Me.hdc)
 
  ' Aktuelle Textausrichtung auswerten
  If CBool(Retval And TA_CENTER) Then Debug.Print "Der Text wird  _
  Zentriert am Referenzpunkt ausgegeben"
  If CBool(Retval And TA_TOP) Then Debug.Print "Der Text wird Oberhalb  _
  des Referenzpunktes ausgegeben"
  ' und so weiter...
 
  ' Neue Textausrichtung einstellen (Alle Textausgaben erfolgen zentriert  
  ' und unterhalb der übergebenen Koordinaten)
  SetTextAlign Me.hdc, TA_CENTER Or TA_BOTTOM Or TA_NOUPDATECP
 
  ' Font erstellen
  Retval = CreateFont(0, 0, 0, 0, FW_BOLD, 0, 0, 0, DEFAULT_CHARSET,  _
  OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,  _
  DEFAULT_PITCH Or FF_DECORATIVE, "Times New Roman")
  If Retval = 0 Then Exit Sub
 
  ' Font der Form zuweisen und alten Font zwischenspeichern
  hOldFont = SelectObject(Me.hdc, Retval)
 
  ' Distanz zwischen den Buchstaben setzten
  ReDim Distance(Len(OutStr) - 1)
  For i = 0 To UBound(Distance)
    Distance(i) = Me.TextWidth(Mid$(OutStr, i + 1, 1)) + 20
  Next i
 
  ' Einen Text ausgeben in der Mitte des Fensters
  ExtTextOut Me.hdc, Me.ScaleWidth / 2, Me.ScaleHeight / 2, ETO_OPAQUE,  _
  ByVal 0&, OutStr, Len(OutStr), Distance(0)
 
  ' Altes Font wiederherstellen und erstellten Font löschen
  DeleteObject SelectObject(Me.hdc, hOldFont)
 
  Me.Refresh
End Sub

Diese Seite wurde bereits 9.489 mal aufgerufen.

nach obenzurück
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel