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