Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: Visual Basic
Expertise: Intermediate
Nov 18, 1998



Building the Right Environment to Support AI, Machine Learning and Deep Learning

Modernize Your Toolbar Look

Using only a few Windows API calls, you can change the standard VB5 toolbar into an Office 97 look-alike. I've implemented two display styles for the toolbar. The first allows you to change the toolbar to an Office 97-style toolbar (similar to the one used by VB5), and the second allows you to change the toolbar to the Internet Explorer 4.0-style toolbar. If you want to use the second style, you must supply each button with some text in order to achieve the effect. In both cases, the button edges are flat and only appear raised when the mouse passes over the button. To implement it, add this code to a BAS module:
Private Declare Function SendMessage Lib "user32" Alias _
	"SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
	ByVal wParam As Integer, ByVal lParam As Any) As Long
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 Const WM_USER = &H400
Private Const TB_SETSTYLE = WM_USER + 56
Private Const TB_GETSTYLE = WM_USER + 57
Private Const TBSTYLE_FLAT = &H800
Private Const TBSTYLE_LIST = &H1000

Public Sub Office97Toolbar(tlb As Toolbar, _
	tlbToolbarStyle As Long)
	Dim lngStyle As Long
	Dim lngResult As Long
	Dim lngHWND As Long

	' Find child window and get style bits
	lngHWND = FindWindowEx(tlb.hwnd, 0&, _
		"ToolbarWindow32", vbNullString)
	lngStyle = SendMessage(lngHWND, _
		TB_GETSTYLE, 0&, 0&)

	' Use a case statement to get the effect
	Select Case tlbToolbarStyle
	Case 1:
		' Creates an Office 97 like toolbar
		lngStyle = lngStyle Or TBSTYLE_FLAT
	Case 2:
		' Creates an Explorer 4.0 like toolbar, 
		' with text to the right
		' of the picture. You must provide text 
		' in order to get the effect.
		lngStyle = lngStyle Or TBSTYLE_FLAT _
	Case Else
		lngStyle = lngStyle Or TBSTYLE_FLAT
	End Select

	' Use the API call to change the toolbar
	lngResult = SendMessage(lngHWND, _
		TB_SETSTYLE, 0, lngStyle)

	' Show the effects
End Sub
Call this routine while a form with a toolbar is loading:
Private Sub Form_Load()
	Call Office97Toolbar(Me.Toolbar1, 2)
	' whatever...
End Sub
Michiel Leij
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date