Fenster Einbetten

Wolfgang Kluge
wolfgang@vbwelt.de

Manchmal hat man 2 oder mehr Fenster, die irgendwie miteinander Verbunden werden müssen. Da gibt es zum einen die Möglichkeit, eine MDI-Anwendung zu schreiben, und zum anderen das Parent-Fenster zu bestimmen(im Normalfall der Desktop).
Das ganze verhält sich so ähnlich wie eine MDI-Anwendung, ist aber gestalterisch weitaus überlegener.

 Deklaration:
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long


Man braucht dazu 2 Formen, eines daß als Eltern-Fenster fungiert, und ein anderes, das sich als KindFenster abstufen läßt.

' 'Aufruf, im ElternFenster Form1
SetParent Form2.hWnd, Form1.hWnd


Etwas aufpassen muß man allerdings, denn -wie im richtigen Leben auch, wenn die Eltern "beendet" werden, stehen die Kinder als Waisen da. (Windows mag sich das Elend irgendwie nicht anschauen und reagiert prompt mit einer allgemeinen Schutzverletzung..)

Also müssen vor dem Schließen des Eltern-Fensters erstmal alle Kindfenster geschlossen werden. Dafür eignet sich das Ereigniss Form_Unload des Eltern-Fensters.

' Aufruf im Form_Unload - Ereigniss von Form1
Unload Form2