wie wichtig sind BeginPaint() und EndPaint()
-
Wie wichtig sind die beiden Funktionen BeginPaint() und EndPaint()?
Ist es moeglich PAINTSTRUCT einmal fuellen zu lassen und immer wieder zu benutzen und nur bei Aenderungen neu anzufordern?
-
BeginPaint und EndPaint müssen IMMER und sollten NUR zur Bearbeitung von WM_PAINT aufgerufen werden, selbst, wenn dazwischen gar nichts steht. BeginPaint füllt beim aufruf die PAINTSTRUCT. Dafür mußt Du vorher eine Instanz davon erstellen.
Ansonsten kannst Du auch außerhalb von WM_PAINT in dein Fenster zeichnen. Dann wird der Inhalt aber mit jeder WM_PAINT wieder gelöscht.
Normalerweise wird die PAINTSRUCT zu Begin der Callback-Funktion erstellt und bleibt dann auch erhalten.
Theoretisch kannst Du die Paintstruct static machen, bringt aber nicht, weil BeginPaint die Daten immer wieder neu schreibt. Allerdings kannst Du die Daten natürlich auch woanders abfragen.
-
BeginPaint sorgt dafür, das keine weiteren WM_PAINT-Nachrichten gesendet werden. Diese Sperre wird mit EndPaint aufgehoben. Wenn man auf BeginPaint verzichtet, dann kann sich die CPU-Auslastung stark erhöhen.
-
ValidateRect