Also,läuft auf nem Windows Vista System.
Das Tab Control wird nur per Quelltext erstellt.
Sowie es
hier im Forum angeboten wurde vom User "
semo".
Ich hab ja bei der Erstellung kein Problem, eher beim zeichnen. Das kann doch nicht sein das ich das nun nur wegen dem Hintergrund selber zeichnen muss??
Normalerweise hat doch jedes Control eine WM_CTLCOLOR message auf die es reagiert, oder nicht? Kann für das TabControl nur keine ausmachen.
so hatte ich mit ERASEBKGND es versucht.
Delphi-Quellcode:
function EraseBkGnd(hWindow: HWND;Clr:COLORREF;
DC: HDC):LRESULT;
var
hBr: hBrush;
r: TRect;
begin
hBr := CreateSolidBrush(Clr);
GetClientRect(hWindow,r);
FillRect(
DC,r,hBr);
DeleteObject(hBr);
result := 1;
end;
function TabWndProc(hTab, uMsg, wParam, lParam:DWORD): DWORD;
stdcall;
var
ps : TPAINTSTRUCT;
pen : HPEN;
brush: HBRUSH;
dc : HDC;
rect : TRect;
OldObjct: DWORD;
begin
Result := 0;
case uMsg
of
WM_ERASEBKGND:
result:=EraseBkGnd(hTab,
RGB(120,120,120),wparam);
{ begin;
SetBkMode(wParam, TRANSPARENT);
result:=GetStockObject( NULL_BRUSH );
end; }
else
Result := CallWindowProc(OldWndProc, hTab, uMsg, wParam, lParam);
end;
end;
hwnd_Tabcontrol := CreateWindow(WC_TABCONTROL, '
', WS_CHILD
or WS_CLIPSIBLINGS
or WS_VISIBLE
or TCS_TOOLTIPS, TabRect.Left, TabRect.Top, TabRect.Right, TabRect.Bottom, wnd, 0, HInstance,
nil );
OldWndProc := Pointer(SetWindowLong(hwnd_Tabcontrol, GWL_WNDPROC, Integer(@TabWndProc)));