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 _ Or TBSTYLE_LIST 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 tlb.Refresh 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 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: |