Deklaration: Declare Function DrawEdge Lib "user32" ( _ ByVal hDC As Long, _ qrc As RECT, _ ByVal edge As Long, _ ByVal grfFlags As Long) As Long Beschreibung: Parameter:
edge Konstanten: Const BDR_RAISEDINNER = &H4 ' Der innere Rahmen steigt an Const BDR_RAISEDOUTER = &H1 ' Der äußere Rahmen steigt an Const BDR_SUNKENINNER = &H8 ' Der innere Rahmen sinkt ab Const BDR_SUNKENOUTER = &H2 ' Der äußere Rahmen sinkt ab Const EDGE_BUMP = (BDR_RAISEDOUTER Or BDR_SUNKENINNER) ' Eine Kombination aus BDR_RAISEDOUTER und BDR_SUNKENINNER Const EDGE_ETCHED = (BDR_SUNKENOUTER Or BDR_RAISEDINNER) ' Eine Kombination aus BDR_SUNKENOUTER und BDR_RAISEDINNER Const EDGE_RAISED = (BDR_RAISEDOUTER Or BDR_RAISEDINNER) ' Eine Kombination aus BDR_RAISEDOUTER und BDR_RAISEDINNER Const EDGE_SUNKEN = (BDR_SUNKENOUTER Or BDR_SUNKENINNER) ' Eine Kombination aus BDR_SUNKENOUTER und BDR_SUNKENINNER 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) Benutzt 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 9.007 mal aufgerufen. |
TOP! Unser Nr. 1 Neu! sevDataGrid 3.0 Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Buchempfehlung Tipp des Monats März 2024 Dieter Otter UTF-8 Konvertierung von Dateien und Strings VB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. Access-Tools Vol.1 Über 400 MByte Inhalt Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB |
||||||||||||||||||
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. |