Deklaration: Declare Function DrawCaption Lib "user32" ( _ ByVal hWnd As Long, _ ByVal hDC As Long, _ pcRect As RECT, _ ByVal uFlags As Long) As Long Beschreibung: Parameter:
uFlags Konstanten: Const DC_ACTIVE = &H1 ' Zeichnet eine aktive Titelleiste Const DC_GRADIENT = &H20 ' (ab Windows 98) Benutzt den Verlauf für die Titelleiste Const DC_ICON = &H4 ' Zeichnet das Icon in der Titelleiste (VB macht da einen Strich durch wenn ' das Fenster keinen Rahmen hat) Const DC_INBUTTON = &H10 ' Zeichnet die Titelleiste als Button Const DC_SMALLCAP = &H2 ' Zeichnet eine kleine Titelleiste unter Benutzung der Schriftart für kleine Titelleisten Const DC_TEXT = &H8 ' Zeichnet den Text für die Titelleiste 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 Commandbuttons 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.241 mal aufgerufen. |
sevISDN 1.0 Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Buchempfehlung Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung Neu! sevCommand 4.0 Professionelle Schaltflächen im modernen Design! Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. |
||||||||||||||||||
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. |