Zum Abschluss soll noch Eugens Funktion "DrawTrackSplit" genauer unter die Lupe genommen werden, da sie den "Schatten" des Splitters erzeugt.

procedure DrawTrackSplit(const hWnd: HWND; x, y, Width, Height: longint; bPattern: boolean = true); const DotBits : array[0..7] of Word = ($5555,$AAAA,$5555,$AAAA,$5555,$AAAA,$5555,$AAAA); var dc : HDC; hbr : HBRUSH; bmp : HBITMAP; begin
Zuerst benötigen wir ein Handle auf den Device Context des Fensters
dc := GetDCEx(hWnd,0,DCX_CACHE or DCX_CLIPSIBLINGS or
DCX_LOCKWINDOWUPDATE);
Da der Parameter "bPattern" standardmäßig auf true steht, wird die schon erwähnte Schraffur erzeugt. Diese Schraffur ist eine im Speicher erzeugte Bitmap, mit einem Raster, das sich aus dem Array der Konstante "DotBits" zusammensetzt. Würden Sie "bPattern" auf false setzen, würden Sie statt der Schraffur einen schwarzen Strich sehen
if bPattern then
begin
bmp := CreateBitmap(8, 8, 1, 1, @DotBits);
hbr := SelectObject(dc, CreatePatternBrush(bmp));
DeleteObject(bmp);
end;
Mit "PatBlt" wird das Muster nun auf das Fenster gezeichnet. Durch die Verwendung von PATINVERT wird das Muster bei einem nochmaligen Aufruf wieder entfernt.
PatBlt(dc, x, y, Width, Height, PATINVERT);
Die im Speicher erzeugte Bitmap und das Handle des Device Context müssen noch freigegeben werden
if bPattern then
DeleteObject(SelectObject(dc, hbr));
ReleaseDC(hWnd, dc);
end;
und das war´s.