Hi Puma,
So geht es halbwegs:
[color=darkgreen]' zuerst die API-Deklarationen
[color=blue]Private Declare Function[/color] GetDC [color=blue]Lib[/color] _
"user32" _
([color=blue]ByVal[/color] hwnd [color=blue]As Long[/color]) [color=blue]As _
Long[/color]
[color=blue]Private Declare Function[/color] CreateSolidBrush _
[color=blue]Lib[/color] "gdi32.dll" _
([color=blue]ByVal[/color] crColor [color=blue]As Long[/color]) _
[color=blue]As Long[/color]
[color=blue]Private Declare Function[/color] ExtFloodFill _
[color=blue]Lib[/color] "gdi32.dll" _
([color=blue]ByVal[/color] hdc [color=blue]As Long[/color], ByVal nXStart _
[color=blue]As Long[/color], _
[color=blue]ByVal[/color] nYStart [color=blue]As Long[/color], ByVal crColor _
[color=blue]As Long[/color], _
[color=blue]ByVal[/color] fuFillType [color=blue]As Long[/color]) _
[color=blue]As Long[/color]
[color=blue]Private Declare Function[/color] SelectObject _
[color=blue]Lib[/color] "gdi32.dll" _
([color=blue]ByVal[/color] hdc [color=blue]As Long[/color], ByVal hObject _
[color=blue]As Long[/color]) [color=blue]As Long[/color]
[color=blue]Private Declare Function[/color] GetPixel [color=blue]Lib[/color] _
"gdi32" _
([color=blue]ByVal[/color] hdc [color=blue]As Long[/color], ByVal X _
[color=blue]As Long[/color], [color=blue]ByVal[/color] y [color=blue]As _
Long[/color]) [color=blue]As Long[/color]
[color=blue]Private Declare Function[/color] SendMessage _
[color=blue]Lib[/color] "user32" [color=blue]Alias[/color] _
"SendMessageA" _
([color=blue]ByVal[/color] hwnd [color=blue]As Long[/color], ByVal wMsg _
[color=blue]As Long[/color], _
[color=blue]ByVal[/color] wParam [color=blue]As Long[/color], lParam _
[color=blue]As Any[/color]) [color=blue]As Long[/color]
[color=blue]Private Declare Function[/color] DeleteObject _
[color=blue]Lib[/color] "gdi32" _
([color=blue]ByVal[/color] hObject [color=blue]As Long[/color]) _
[color=blue]As Long[/color]
[color=blue]Private[/color] hDCTab [color=blue]As Long[/color]
[color=blue]Private[/color] hBrush [color=blue]As Long[/color]
[color=blue]Private[/color] MergeCol [color=blue]As Long[/color]
[color=blue]Private[/color] TabCols(1 [color=blue]To[/color] 3) [color=blue]As _
Long[/color]
[color=blue]Private Const[/color] FLOODFILLSURFACE = 1
[color=blue]Private Const[/color] TCM_FIRST = &H1300
[color=blue]Private Const[/color] TCM_GETITEMRECT = (TCM_FIRST + 10)
[color=blue]Private Type[/color] RECT
Left [color=blue]As Long[/color]
Top [color=blue]As Long[/color]
Right [color=blue]As Long[/color]
Bottom [color=blue]As Long[/color]
[color=blue]End Type[/color]
[color=blue]Private Sub[/color] Form_Load()
[color=darkgreen]' TabColors definieren
TabCols(1) = RGB(0, 0, 255)
[color=darkgreen]' DC-Handler für TabStrip ermitteln
hDCTab = GetDC(StatusBar1.hwnd)
[color=darkgreen]' Damit das Paint-Event ausgelöst wird
Me.AutoRedraw = [color=blue]False[/color]
[color=blue]End Sub[/color]
[color=blue]Private Sub[/color] SetTabColors([color=blue]ByVal[/color] lCol _
[color=blue]As Long[/color], [color=blue]ByVal[/color] X [color=blue]As _
Long[/color], [color=blue]ByVal[/color] y [color=blue]As Long[/color])
[color=blue]Dim[/color] hOldBrush [color=blue]As Long[/color]
[color=blue]Dim[/color] RVal [color=blue]As Long[/color]
[color=blue]Dim[/color] bkColor [color=blue]As Long[/color]
MergeCol = GetPixel(hDCTab, X, y)
[color=darkgreen]' Neuen Solid Pinsel erstellen
hBrush = CreateSolidBrush(lCol)
[color=darkgreen]' Neuen Pinsel zum aktuellen Pinsel deklarieren
hOldBrush = SelectObject(hDCTab, hBrush)
[color=darkgreen]' Mit neuer Farbe füllen
RVal = ExtFloodFill(hDCTab, X, y, MergeCol, FLOODFILLSURFACE)
[color=darkgreen]' Ursprünglichen Brush wiederherstellen
RVal = SelectObject(hDCTab, hOldBrush)
DeleteObject hBrush
[color=blue]End Sub[/color]
[color=blue]Private Sub[/color] Timer1_Timer()
[color=blue]Dim[/color] i [color=blue]As Integer[/color]
[color=blue]Dim[/color] r [color=blue]As[/color] RECT
[color=darkgreen]'StatusBar1.Refresh
SendMessage StatusBar1.hwnd, TCM_GETITEMRECT, i, r
SetTabColors TabCols(i + 1), r.Left + 5, r.Top + 5
[color=blue]End Sub[/color] Nicht beschweren wenn die es nicht ganz Funktioniert.
Vielleicht kann Dieter da weiter helfen. |