Results 1 to 29 of 29

Thread: VB6 - Change your Toolbar Background (Color or Picture)

Threaded View

  1. #1

    Thread Starter
    PowerPoster jcis's Avatar
    Join Date
    Jan 2003
    Location
    Argentina
    Posts
    4,430

    VB6 - Change your Toolbar Background (Color or Picture)



    With this code you can change a Toolbar backcolor (Windows Common Controls 5 or 6).
    You can also use a picture (bitmap) as background, here I'll do both things.

    I recommend downloading the example attached, but I'll also show the code here, I used Common Controls 6 toolbars for this example, minor changes are needed if you want to use Common Controls 5 toolbars.

    IN THE FORM
    - Add 2 Toolbars, change Toolbar1 style to FLAT, Toolbar2 style must remain STANDARD
    - Add a Picture box and add a picture to it.
    - Paste this code:
    Code:
    Option Explicit
    
    Private Sub Form_Load()
        ApplyChanges
    End Sub
    
    Private Sub ApplyChanges()
    '=========================
        Dim LngNew As Long
        'Use a picture with the FLAT TB (Toolbar1)
        LngNew = CreatePatternBrush(Picture1.Picture.Handle) 'Creates the background from a Picture Handle
        ChangeTBBack Toolbar1, LngNew, enuTB_FLAT    
        'Change Backcolor of the STANDARD TB (Toolbar2)
        LngNew = CreateSolidBrush(RGB(240, 120, 120))        'Creates the background from a Color (Long)
        ChangeTBBack Toolbar2, LngNew, enuTB_STANDARD
        'Refresh Screen to see changes
        InvalidateRect 0&, 0&, False
    End Sub
    IN A MODULE
    Code:
    Option Explicit
    
    Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" ( _
        ByVal hWnd1 As Long, ByVal hWnd2 As Long, _
        ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
    Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
    Private Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" ( _
                    ByVal hwnd As Long, ByVal nindex As Long, ByVal dwnewlong As Long) As Long
    Public Declare Function InvalidateRect Lib "user32" _
                    (ByVal hwnd As Long, lpRect As Long, ByVal bErase As Long) As Long
    Public Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long
    Public Declare Function CreatePatternBrush Lib "gdi32" (ByVal hBitmap As Long) As Long
    
    Public Enum enuTBType
        enuTB_FLAT = 1
        enuTB_STANDARD = 2
    End Enum
    
    Private Const GCL_HBRBACKGROUND = (-10)
    
    Public Sub ChangeTBBack(TB As Object, PNewBack As Long, pType As enuTBType)
    Dim lTBWnd      As Long
        Select Case pType
            Case enuTB_FLAT     'FLAT Button Style Toolbar
                'Apply directly to TB Hwnd
                DeleteObject SetClassLong(TB.hwnd, GCL_HBRBACKGROUND, PNewBack)        
            Case enuTB_STANDARD 'STANDARD Button Style Toolbar
                lTBWnd = FindWindowEx(TB.hwnd, 0, "msvb_lib_toolbar", vbNullString) 'Find Hwnd first
                DeleteObject SetClassLong(lTBWnd, GCL_HBRBACKGROUND, PNewBack)      'Set new Back
        End Select
    End Sub
    '===========================================================================================
    ' If you want to use Win Common Control 5 Toolbars, use "ToolbarWindow32" instead of
    ' "msvb_lib_toolbar". Win Common Control 5 Toolbars can't be FLAT, they are always STANDARD,
    ' so use enuTB_STANDARD when you call this
    '===========================================================================================
    More info about this
    - This will also work with xp styles (manifest file).
    - If the picture is smaller than the toolbar the pattern will be repeated, if its too big, you will see just part of it, so I recomend to make your bmp or jpg picture the same size of the toolbar. You can also let it repeat the pattern as I did in the project attached.
    - Changes will remain visible in design mode until you close VB IDE.
    - If you apply this to a toolbar in your app with a given style (i.e: Flat) all the flat toolbars and the controls that contain flat toolbars with the same Comon Controls version will also be modified, (but JUST inside your app).
    Example: Common Dialog Control uses a vertical toolbar (WCC version 5).

    Attached Images Attached Images  
    Attached Files Attached Files
    Last edited by jcis; Aug 1st, 2012 at 06:56 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width