Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 7. Mai 2003, 04:36
Was meinst du mit PaintFunktion? Die gibt es in dem Sinne nicht. Ein Fenster bekommt von Windows ein WM_PAINT geschickt, wenn es neu gezeichnet werden muß. Dies entspricht dem OnPaint-Ereignis einer VCL-Komponente. An dieser Stelle werden dann alle nötigen "Paint-Maßnahmen" durchgeführt. Greift man an dieser Stelle nicht ein übernimmt Windows alles, weil dann die Nachricht an die Standardfensterprozedur weitergereicht wird.

Noch mal zu WM_PAINT:
Delphi-Quellcode:
WM_PAINT:
begin
  dc := BeginPaint(ps);
  { Punkt, Punkt, Komma, Strich, fertig ist das Mondgesicht }
  EndPaint(ps);
end;
Wichtig ist hier das EndPaint. Denn dies sagt Windows, dass alle nötigen Paint-Aktionen durchgeführt wurden und das Fenster wieder aktuell ist. Läßt man das EndPaint weg, bekommt Windows keine Bestätigung, dass alle Paint-Aktionen durchgeführt wurden und denkt, das Fenster wäre noch ungültig, so dass es die nächste WM_PAINT-Nachricht schickt. Und dann geht alles von vorne los. Es kann also passieren, dass dein Fenster von Windows mit WM_PAINT-Nachrichten zu geballert wird und nur damit beschäftigt ist seinen Fensterinhalt neu zu zeichnen und zu gar nichts anderem mehr kommt.

Mehr dazu und ein Beispiel gibt es hier: Grundlagen der GDI
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat