Deklaration: Declare Function DrawFrameControl Lib "user32" ( _ ByVal hDC As Long, _ lpRect As RECT, _ ByVal uType As Long, _ ByVal uState As Long) As Long Beschreibung: Parameter:
uType Konstanten: Const DFC_BUTTON = 4 ' Standard-Button Const DFC_CAPTION = 1 ' Titelleiste Const DFC_MENU = 2 ' Menü Const DFC_POPUPMENU = 5 ' (Windows 98, ME, NT, 2000, XP) Popupmenü Const DFC_SCROLL = 3 ' Scrollleiste 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 8.004 mal aufgerufen. |
sevZIP40 Pro DLL ![]() Zippen und Unzippen wie die Profis! Mit nur wenigen Zeilen Code statten Sie Ihre Anwendungen ab sofort mit schnellen Zip- und Unzip-Funktionen aus. Hierbei lassen sich entweder einzelnen Dateien oder auch gesamte Ordner zippen bzw. entpacken. Buchempfehlung Tipp des Monats ![]() Dieter Otter PopUp-Menü wird nicht angezeigt :-( In diesem Tipp verraten wir Ihnen, wie Sie Probleme mit PopUp-Menüs umgehen können, wenn diese unter bestimmten Umständen einfach nicht angezeigt werden. 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. |
||||||||||||||||||
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. |