Hi,
ich mochte um eine Form einen eigenen Rahmen mit WM_PAINT zeichnen. Ich dachte mir dass das
eigentlich eine einfache Sache ist, aber ne...
Folgenden Code verwende ich z.Z.:
Delphi-Quellcode:
procedure TForm1.WMNCPaint(
var _Message: TWMNCPaint);
var
aCanvas: TCanvas;
r, r2: trect;
rn, rn2: hrgn;
begin
inherited;
aCanvas := TCanvas.Create;
try
aCanvas.Handle := GetWindowDC(
Handle);
getwindowrect(
handle, r);
rn := CreateRectRgnIndirect(r);
r2 := clientrect;
r2.top := 5;
rn2 := CreateRectRgnIndirect(r2);
CombineRgn(rn, rn, rn2, RGN_XOR);
aCanvas.Pen.Color := clLime;
aCanvas.Brush.Style := bsFDiagonal
{bsSolid};
aCanvas.Brush.Color := clBlack;
if not FillRGN(aCanvas.Handle, rn, aCanvas.Brush.Handle)
then
windows.Beep(880,20);
deleteobject(rn);
deleteobject(rn2);
aCanvas.Brush.Style := bsClear;
aCanvas.Pen.Style := psSolid;
aCanvas.Rectangle(0, 0, Width, Height);
finally
ReleaseDC(
Handle, aCanvas.Handle);
aCanvas.Free;
end;
end;
Das Problem ist das der Rahmen nicht richtig gezeichnet wird bzw. verschwindet
beim dem Verändern der Grösse des Fensters.
Wer kann helfen ?