Hallo Frank,
Ich hab Dir mal ein Beispiel zum Verständnis gemacht.
Ein Editfeld auf einem Formular.
Bei jeder Änderung wird ein Wert um eins hochgezählt und in der Titelleiste des Formulars angezeigt.
Dazu wird auch jedesmal eine rote horizontale Line immer jeweils ein Pixel weiter unten gezeichnet.
Also bei jeder Änderung in deinem Textfeld wird auch eine weitere Line gezeichnet,
das sollte man auch sofort sehen.
Nachdem Du einige Linien siehst, nimmst Du mal das Fenster und schiebst es bis zur Hälfte links oder
rechts aus dem Bildschirm und dann wieder zurück in die Mitte.
Nun wirst Du feststellen, dass der Bereich, welcher ausserhalb des Bildschirms war,
auch nicht mehr richtig restauriert wird. Die Linien sind abgeschnitten.
Wenn Du dann das Formular komplett runterklappst und wieder hochklappst, dann sind alle roten Linien verloren.
Wenn Du nun wieder im Editfeld etwas änderst werden wieder Linien dort gezeichent wo es vorher aufgehört hatte.
Die Linien sind also NUR momentan sichtbar, sollte irgen etwas den Bildinhalt verdecken, ist der Inhalt
unwiederruflich verloren. Du kannst auch mal nen anderes Fenster drüber schieben, das wirkt dann wie ein Radiergummi
auf dein roten Linien.
Es fehlt also ein Mechanismus, der deinen Bildinhalt wieder herstellt und genau dafür ist die OnPaint Funktion zuständig.
Im Prinzip passiert genau das vermutlich bei deinem Programm.
Soweit der erste Teil: der zweite folgt gleich:
Siro