|
Die "alten" Common-Controls, die in Visual Basic 5
enthalten sind (COMCTL32.OCX), verfügen noch nicht
über den flachen, "coolen" Stil. Mit einer Handvoll
API-Funktionsaufrufen lässt sich dieses Manko jedoch problemlos
beheben.
Ein erster Aufruf von SendMessage
liefert Ihnen die aktuellen Stileinstellungen
einer Toolbar. Diese verknüpfen Sie mit der gewünschten
Stilkombination und senden die neue Stilkombination wieder mit
SendMessage an diese Toolbar zurück. Das einzige kleine Hindernis
besteht darin, das richtige Fenster-Handle als Addressaten der
SendMessage-Aufrufe ausfindig zu machen. Das für die Darstellung
zuständige Fenster ist nämlich nicht das Fenster des
Toolbar-Controls selbst, sondern ein Kind-Fenster desselben. Dessen
Handle finden Sie mit Hilfe der API-Funktion FindWindowEx,
die die Kind-Fenster des Toolbar-Controls nach einem Fenster der
Klasse "ToolbarWindow32" durchsucht.
Die Hilfsfunktion TBSetFlatStyle vereinfacht die Handhabung und
ermöglicht auch das Zurücksetzen des Stils - falls dies jemals
gewünscht werden sollte...
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 SendMessage Lib "user32" _
Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
Public Sub TBSetFlatStyle(TBar As Toolbar, _
Optional Flat As Boolean = True)
Dim nStyle As Long
Dim nTBhWnd As Long
Const TBSTYLE_FLAT = &H800
Const TB_SETSTYLE = &H438
Const TB_GETSTYLE = &H439
nTBhWnd = FindWindowEx(TBar.hwnd, 0&, "ToolbarWindow32", _
vbNullString)
nStyle = SendMessage(nTBhWnd, TB_GETSTYLE, 0&, 0&)
If Flat Then
nStyle = nStyle Or TBSTYLE_FLAT
Else
nStyle = nStyle And Not TBSTYLE_FLAT
End If
SendMessage nTBhWnd, TB_SETSTYLE, 0, nStyle
TBar.Refresh
End Sub
 |
Flache Toolbars auch mit den Common-Controls
in Visual Basic 5

|

|