Vor Jahrzehnten hatte ich mir mal so etwas ähnliches gebastelt.
Ich bin dabei etwas anders vorgegangen da bei mir nur ein Fenster-Typ dargestellt werden sollte.
In der
IDE habe ich mir ein mini-Fenter gebastelt, im großen und ganzen war es nur ein Label und ein Panel.
Diese leere Form habe ich als proto-Form in Resource abgelegt.
Wie ConnorMcLeod bereits schrieb braucht man dafür eine Verwaltung.
Die Position "unten rechts über Taskbar" war das einzige was ich zum berechnen brauchte.
In der Verwaltung habe ich den Bildschirm in "Max Höhe / Fensterhöhe" unterteilt um Positionen für die einzelnen Fenster zu erhalten.
Nun lediglich proto-Form in eine dynamische umwandeln, Label und Panel beschreiben, Verwaltung abfragen an welcher Position was frei ist und anzeigen lassen.
Was ich damals noch nicht drinnen hatte war das runterrutschen, wäre über die Verwaltung aber auch nicht so extrem schwer umzusetzen da die immer weiß welche Fensterpositionen belegt sind.
Problematisch wurde es bei mir in dem Sonderfall "was soll passieren wenn ein neues Fenster nicht mehr auf Screen passt"....
....da meine Art der Verwaltung nur "Max Screen Höhe / Fensterhöhe" als valide Ziele kannte.