Um deine Frage dezüglich der BeginPaint-Prozedur zubeantworten:
Die BeginPaint kann nur bei der Message WM_PAINT ausgeführt werden.
BeginPaint leitet das Zeichnen des Fenster "inneren" ein, d.h. der Bereich, der in den Rändern liegt, also die Fläche, wo du bei der
VCL immer die Komponenten reinsetzt. Nach BeginPaint kannst du alle deine Zeichnungs-Befehle ausführen. Wenn du alles hast rufst du EndPaint auf. Wenn du vorhast ein Fenster selber "zuzeichnen", solltest du keine Ränder haben. Der Nachteil ist, du musst diese Windows-Fenster-Bar selber zeichnen und die Buttons sowie die Befehle selber einbinden, z.b. das Minimieren, Schliessen und Maximieren. Die WM_PAINT Message sollte man nur abfangen und selber behandeln, wenn man sein Fenster oder Controls selber gestallten will.