Deklaration: Declare Function DrawText Lib "user32" _ Alias "DrawTextA" ( _ ByVal hDC As Long, _ lpStr As String, _ ByVal nCount As Long, _ lpRect As RECT, _ ByVal wFormat As Long) As Long Beschreibung: Parameter:
wFormat Konstanten: Const DT_BOTTOM = &H8 ' Der Text wird am unterem Rand ausgerichtet (Nur in Verbindung mit DT_SINGLELINE) Const DT_CALCRECT = &H400 ' Die Funktion füllt die RECT-Struktur mit den Koordinaten, die für das ' Zeichnen des Textes benötigt werden, zeichnet den Text aber nicht Const DT_CENTER = &H1 ' Der Text wird horizontal zentriert Const DT_EDITCONTROL = &H2000 ' Zeichnet den Text, wie es eine Textbox tun würde, nur teilweise sichtbare ' Zeilen bei zu knapp berechneten übergebenen Koordinaten werden nicht gezeichnet Const DT_END_ELLIPSIS = &H8000 ' Der übergebene Puffer mit dem zu zeichnenden Text wird mit dem Text ' gefüllt, der nicht in angegebenen Koordinaten dargestellt werden kann (Nur ' in Verbindung mit DT_MODIFYSTRING) Const DT_EXPANDTABS = &H40 ' Zeichnet TAB-Zeichen mit 8 Leerzeichen (Nicht in Verbindung mit ' DT_WORD_ELLIPSIS, DT_PATH_ELLIPSIS und DT_END_ELLIPSIS) Const DT_EXTERNALLEADING = &H200 ' Fügt jeder Zeile die Höhe der Externen Führung hinzu Const DT_HIDEPREFIX = &H100000 ' (Windows 2000/XP) Zeichnet die auf einem &-Zeichen folgenden Unterstriche ' nicht, die &-Zeichen werden aber wie bisher ausgeblendet Const DT_INTERNAL = &H1000 ' Benutzt die Systemschriftart um die benötigten Koordinaten zu berechnen Const DT_LEFT = &H0 ' Der Text wird links ausgerichtet Const DT_MODIFYSTRING = &H10000 ' Der übergebene Puffer wird mit den Wörtern oder Zeichen gefüllt die aus ' Platzmangel nicht gezeichnet werden konnten (Nur in Verbindung mit ' DT_END_ELLIPSIS oder DT_PATH_ELLIPSIS) Const DT_NOCLIP = &H100 ' Der Text wird an den angegebenen Koordinaten nicht abgeschnitten falls der ' Platz nicht ausreichend ist Const DT_NOFULLWIDTHCHARBREAK = &H80000 ' (Windows 98, ME, NT, 2000, XP) Es werden Doppelzeichen für Zeilenumbrüche ' verwendet (nicht in Verbindung mit DT_WORDBREAK) Const DT_NOPREFIX = &H800 ' Zeichnet die auf einem &-Zeichen folgendenden Unterstriche nicht, die ' &-Zeichen werden normal angezeigt Const DT_PATH_ELLIPSIS = &H4000 ' Ersetzt Buchstaben in der Mitte des übergebenen Strings damit er in den ' Koordinaten gezeichnet werden kann (nur in Verbindung mit DT_MODIFYSTRING) Const DT_PREFIXONLY = &H200000 ' (Windows 2000, XP) Zeichnet bei Verwendung von &-Zeichen nur die Unterstriche Const DT_RIGHT = &H2 ' Der Text wird rechts ausgerichtet Const DT_RTLREADING = &H20000 ' Der Text wird von Rechts nach Links gezeichnet wenn ein Hebräischer Font gesetzt ist Const DT_SINGLELINE = &H20 ' Der Text wird in einer einzelnen Zeile gezeichnet, VBCrLf-Zeichen werden ignoriert Const DT_TABSTOP = &H80 ' Setzt die Anzahl der Leerzeichen für ein Tab-Zeichen, die Bits 8 bis 15 ' erwarten die Anzahl der Leerstellen Const DT_TOP = &H0 ' Der Text wird oben ausgerichtet Const DT_VCENTER = &H4 ' Der Text wird vertikal zentriert (nur in Verbindung mit DT_SINGLELINE) Const DT_WORDBREAK = &H10 ' Ist eine Zeile zu lange für die angegebenen Koordinaten, so wird zwischen ' den benötigten Wörtern ein VBCrLf-Zeichen eingefügt Const DT_WORD_ELLIPSIS = &H40000 ' Der übergebene Puffer wird mit den Wörtern gefüllt die in den angegebenen ' Koordinaten aus Platzgründen nicht dargestellt werden konnten Rückgabewert: Beispiel: Private Declare Function DrawCaption Lib "user32" ( _ ByVal hWnd As Long, _ ByVal hDC As Long, _ pcRect As RECT, _ ByVal uFlags As Long) As Long Private Declare Function DrawEdge Lib "user32" ( _ ByVal hDC As Long, _ qrc As RECT, _ ByVal edge As Long, _ ByVal grfFlags As Long) As Long Private Declare Function DrawFocusRect Lib "user32" ( _ ByVal hDC As Long, _ lpRect As RECT) As Long Private Declare Function DrawFrameControl Lib "user32" ( _ ByVal hDC As Long, _ lpRect As RECT, _ ByVal uType As Long, _ ByVal uState As Long) As Long Private Declare Function DrawText Lib "user32" _ Alias "DrawTextA" ( _ ByVal hDC As Long, _ lpStr As String, _ ByVal nCount As Long, _ lpRect As RECT, _ ByVal wFormat As Long) As Long Private Declare Function SetRect Lib "user32" ( _ lpRect As RECT, _ ByVal X1 As Long, _ ByVal Y1 As Long, _ ByVal X2 As Long, _ ByVal Y2 As Long) As Long Private Declare Function PtInRect Lib "user32.dll" ( _ lpRect As RECT, _ ByVal x As Long, _ ByVal y As Long) As Long Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type ' DrawText wFormat-Konstanten Private Const DT_CENTER = &H1 ' Der Text wird horizontal Zentriert Private Const DT_SINGLELINE = &H20 ' Der Text wird in einer einzelnen Zeile ' gezeichnet, VBCrLf-Zeichen werden ignoriert Private Const DT_VCENTER = &H4 ' Der Text wird vertikal Zentriert (nur in ' Verbindung mit DT_SINGLELINE) ' DrawFrameControl uState-Konstanten Private Const DFCS_BUTTONPUSH = &H10 ' (DFC_BUTTON) Standard Button Private Const DFCS_CAPTIONCLOSE = &H0 ' (DFC_CAPTION) Schließensymbol der Titelleiste Private Const DFCS_FLAT = &H4000 ' Das Objekt ist flach Private Const DFCS_PUSHED = &H200 ' Das Objekt ist gedrückt ' DrawFrameControl uType-Konstanten Private Const DFC_BUTTON = 4 ' Standard Button Private Const DFC_CAPTION = 1 ' Titelleiste ' DrawEdge grfFlags-Konstanten Private Const BF_TOP = &H2 ' Der obere Rahmen wird gezeichnet Private Const BF_RIGHT = &H4 ' Der rechte Rahmen wird gezeichnet Private Const BF_LEFT = &H1 ' Der linke Rahmen wird gezeichnet Private Const BF_BOTTOM = &H8 ' Der untere Rahmen wird gezeichnet Private Const BF_RECT = (BF_LEFT Or BF_TOP Or BF_RIGHT Or BF_BOTTOM) ' Es werden alle Seiten des Rahmens gezeichnet ' DrawEdge edge-Konstanten Private Const BDR_RAISEDOUTER = &H1 ' Der äußere Rahmen steigt an Private Const BDR_SUNKENINNER = &H8 ' Der innere Rahmen sinkt ab Private Const EDGE_BUMP = (BDR_RAISEDOUTER Or BDR_SUNKENINNER) ' Eine Kombination aus BDR_RAISEDOUTER und BDR_SUNKENINNER ' DrawCaption uFlags-Konstanten Private Const DC_ACTIVE = &H1 ' Zeichnet eine aktive Titelleiste Private Const DC_GRADIENT = &H20 ' (ab Windows 98) Benutz den Verlauf für ' die Titelleiste Private Const DC_ICON = &H4 ' Zeichnet das Icon in der Titelleiste (VB macht ' da einen Strich durch, wenn das Fenster keinen Rahmen hat) Private Const DC_TEXT = &H8 ' Zeichnet den Text für die Titelleiste Dim TitelBar As RECT, TBClose As RECT, CloseState As Long, WorkArea As RECT Dim CMDButton As RECT, ButtonState As Long, CMDHaveFocus As Boolean, _ FoucsRect As RECT ' Fensterbereiche festlegen ' (Eigenschaft setzen nicht vergessen: Me.BorderStyle = 0 und ' Me.ShowInTaskbar = True) Private Sub Form_Load() Dim Retval As Long Me.ScaleMode = vbPixels ' Titelleiste setzen Retval = SetRect(TitelBar, 0, 0, Me.ScaleWidth, 18) ' Titelleistenbutton setzen Retval = SetRect(TBClose, Me.ScaleWidth - 18, 2, Me.ScaleWidth - 2, 16) ' Arbeitsbereich setzen Retval = SetRect(WorkArea, 0, 18, Me.ScaleWidth - 1, Me.ScaleHeight) ' Commandbutton setzen Retval = SetRect(CMDButton, (Me.ScaleWidth / 2) - 80, (Me.ScaleHeight _ / 2) - 30, Me.ScaleWidth / 2, Me.ScaleHeight / 2) ' Fokusrechteck des Commandbutton setzen Retval = SetRect(FoucsRect, (Me.ScaleWidth / 2) - 78, (Me.ScaleHeight _ / 2) - 28, Me.ScaleWidth / 2 - 2, Me.ScaleHeight / 2 - 2) End Sub ' Zeichnen der Objekte Private Sub Form_Paint() Dim Retval As Long ' Titelleiste zeichnen Retval = DrawCaption(Me.hWnd, Me.hDC, TitelBar, DC_ACTIVE Or _ DC_GRADIENT Or DC_ICON Or DC_TEXT) ' Titelleisten Button zeichnen Retval = DrawFrameControl(Me.hDC, TBClose, DFC_CAPTION, _ DFCS_CAPTIONCLOSE Or CloseState) ' Arbeitsbereich zeichnen Retval = DrawEdge(Me.hDC, WorkArea, EDGE_BUMP, BF_RECT) ' Commandbutton zeichnen Retval = DrawFrameControl(Me.hDC, CMDButton, DFC_BUTTON, _ DFCS_BUTTONPUSH Or ButtonState) ' Text des Commandbuttons Zeichnen Retval = DrawText(Me.hDC, ByVal "Command1", Len("Command1"), _ CMDButton, DT_CENTER Or DT_VCENTER Or DT_SINGLELINE) ' Focus zeichnen ? If CMDHaveFocus Then Retval = DrawFocusRect(Me.hDC, FoucsRect) End If End Sub ' Buttonveräderungen anzeigen Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As _ Single, y As Single) Select Case 1 Case PtInRect(CMDButton, x, y) If ButtonState = 0 Then ButtonState = DFCS_FLAT Me.Refresh End If Case PtInRect(TBClose, x, y) If CloseState = 0 Then CloseState = DFCS_FLAT Me.Refresh End If Case Else If ButtonState = DFCS_FLAT Then ButtonState = 0 Me.Refresh End If If CloseState = DFCS_FLAT Then CloseState = 0 Me.Refresh End If End Select End Sub ' Klick eines Buttons simulieren Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As _ Single, y As Single) Select Case 1 Case PtInRect(CMDButton, x, y) ButtonState = DFCS_PUSHED Me.Refresh Case PtInRect(TBClose, x, y) CloseState = DFCS_PUSHED CMDHaveFocus = False Me.Refresh End Select End Sub ' Ereignis beim Klicken eines Buttons auslösen Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, _ y As Single) Select Case 1 Case PtInRect(CMDButton, x, y) ButtonState = 0 CMDHaveFocus = True Me.Refresh MsgBox "Sie haben Command1 gedrückt" Case PtInRect(TBClose, x, y) CloseState = 0 Me.Refresh Unload Me Case Else ButtonState = 0 CloseState = 0 Me.Refresh End Select End Sub Diese Seite wurde bereits 14.893 mal aufgerufen. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Buchempfehlung Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 Neu! sevCoolbar 3.0 Professionelle Toolbars im modernen Design! Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access |
||||||||||||||||||||
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. |