Jak z HDC wyciągnąć Canvas?

0

Mam procedurę obsługującą zdarzenie Paint w Labelu (TExtLabel zawiera tylko jedną dodatkową procedurę):

procedure TExtLabel.WMPaint(var Msg: TWMPAINT);
var
  szer, wys: Integer;
begin
  szer := 0;
  wys := 0;
  Pisz(TCanvas(MSg.DC), szer, wys, Caption);
  Width := szer;
  Height := wys;
end;

ta dodatkowa procedura to:

procedure Pisz(Plotno: TCanvas; var X, Y: Integer; Tekst: String);
begin
{...}
end;

Dlaczego kiedy w tej procedurze odwołuję się do Plotno to Delphi wyrzuca błąd Access violation???
Jak to zrobić inaczej???

0

Nikt nie wie?
To co! Bo sam na to wpadłem (znaczy F1 ;-)).
Przeniosłem zadania procedury Pisz na WMPaint:

procedure TExtLabel.WMPaint(var Msg: TWMPAINT);
var
  Plotno: TCanvas;
{..}
begin
  Plotno := TCanvas.Create;
  Plotno.Handle := Msg.DC;  //to jest kluczowa linijka
{..}

I działa!!

1 użytkowników online, w tym zalogowanych: 0, gości: 1