FlatBar in Visual Basic
Se avete diversi programmi che fanno uso di ToolBar e volete dargli un nuovo look per sembrare piu` moderni, queste sono le API che fanno per voi. Unico requisito, necessita installare la Comctl32.dll versione 4.70. Una fonte sicura per installare questa Dll senza spendere una lira e` Internet Explorer 4.0. Vi sono comunque molti altri prodotti che la portano al loro interno (dovrebbe installarla anche il Service Pack 3 di VB5).


Dopo aver verificato la versione in proprio possesso, creare un modulo Bas con le seguenti dichiarazioni:

Public Const WM_USER = &H400
Public Const TB_SETSTYLE = WM_USER + 56
Public Const TB_GETSTYLE = WM_USER + 57
Public Const TBSTYLE_FLAT = &H800

Public Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" _
 (ByVal hwnd As Long, _
 ByVal wMsg As Long, _
 ByVal wParam As Long, _
 ByVal lParam As Long) As Long

Public 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


à ed aggiungete ora questa procedura pubblica:



Public Sub MakeFlat(Toolbar As Toolbar)

 Dim Style As Long
 Dim hToolbar As Long
 Dim Result As Long

 hToolbar = FindWindowEx(Toolbar.hwnd, 0&, "ToolbarWindow32", vbNullString)

 Style = SendMessageLong(hToolbar, TB_GETSTYLE, 0&, 0&)

 If Style And TBSTYLE_FLAT Then
  Style = Style Xor TBSTYLE_FLAT
 Else
  Style = Style Or TBSTYLE_FLAT
 End If

 Result = SendMessageLong(hToolbar, TB_SETSTYLE, 0, Style)
 Toolbar.Refresh
End Sub



A questo punto, dall'evento Load di tutti i Forms che contengono delle ToolBar, basta richiamare la sub passandogli come argomento il nome della ToolBar stessa. A desing time la ToolBar sara` quella di sempre, ma a runtime la vedrete in stile Internet Explorer 4. Richiamando una seconda volta la stessa Sub, la ToolBar tornera` a presentare i normali pulsanti. Volendo proteste anche dare all'utente la possibilita` di scelta fra i due stili.

Riccardo Bartolini