Rubrik: Oberfläche · Fenster | VB-Versionen: VB4, VB5, VB6 | 15.01.01 |
Verwenden Ihrer eigener Titelleiste Hier wird gezeigt, wie Sie anstelle der Standard-Titelleisten Ihre eigene Titelleiste verwenden. | ||
Autor: Dieter Otter | Bewertung: | Views: 22.856 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Stört Sie das eintönige Standard-Windows, was die Dialoge und Fenster betrifft? Dann ändern Sie z.B. doch einfach die Fenster-Titelleiste, indem Sie Ihre eigene Titelleiste verwenden.
Voraussetzung für eine eigene Titelleiste ist das Ausschalten der Standard-Titelleiste. Dies erreichen Sie am einfachsten, indem Sie die Form-Eigenschaft BorderStyle auf 0 - kein setzen.
' zunächst die benötigten Deklarationen Public Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Public Declare Function DrawCaption Lib "User32" ( _ ByVal hwnd As Long, _ ByVal hdc As Long, _ pcRect As RECT, _ ByVal un As Long) As Long Public 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 Public Declare Function SendMessage Lib "User32" _ Alias "SendMessageA" ( _ ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ lParam As Any) As Long Public Declare Sub ReleaseCapture Lib "User32" () Public Const WM_NCLBUTTONDOWN = &HA1 Public Const HTCAPTION = 2 ' Höhe und Farbe Ihrer eigenen Titelleiste Const tbarWidth = 20 Const tbarColor = &H29 Dim r As RECT Private Sub Form_Load() Form1.AutoRedraw = True Me.Cls Me.ScaleMode = vbPixels SetRect r, 0, 0, Me.ScaleWidth, tbarWidth DrawCaption Me.hwnd, Me.hdc, r, tbarColor End Sub ' Bei Größenänderung der Form muß die ' Titelleiste neu gezeichnet werden Private Sub Form_Resize() SetRect r, 0, 0, Me.ScaleWidth, tbarWidth DrawCaption Me.hwnd, Me.hdc, r, tbarColor End Sub ' "Darf" der Anwender das Fenster über die Titelleiste ' verschieben, benötigen Sie noch folgenden Code: Private Sub Form_MouseDown(Button As Integer, _ Shift As Integer, X As Single, Y As Single) ' Außerhalb Tielleiste If Y > tbarWidth Then Exit Sub Dim lResult As Long If Button = 1 Then Call ReleaseCapture lResult = SendMessage(Me.hwnd, _ WM_NCLBUTTONDOWN, HTCAPTION, 0&) End If End Sub
Probieren Sie für tbarColor auch einmal die Werte &H9 oder &H19 aus.