Einzelnen Beitrag anzeigen

Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#1

WM_NCPAINT - Rahmen selber Zeichnen klappt nicht so recht...

  Alt 3. Jul 2006, 08:35
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 ?
Angehängte Dateien
Dateityp: zip ncpaint_113.zip (2,2 KB, 35x aufgerufen)
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat